【发布时间】:2012-07-17 04:42:27
【问题描述】:
我首先按照此处规定的方法使用EF代码建立了一对一的关系:
Unidirectional One-To-One relationship in Entity Framework
我的映射看起来像这样......
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Asset>()
.HasRequired(i => i.NewsItem)
.WithOptional(e => e.Asset)
.Map(m => m.MapKey("NewsItemId"));
}
但是当我得到这个异常时......
“Asset_NewsItem”关联集中的关系处于“已删除”状态。给定多重约束,相应的“Asset_NewsItem_Source”也必须处于“已删除”状态。
每当这段代码运行时:
var entry = _db.NewsItems.Find(id);
entry.Asset = new Asset();
_db.DbContext.SaveChanges();
如果我明确地将与 NewsItem 关联的先前资产标记为删除,我可以让事情正常工作,但它看起来有点不靠谱。看起来,根据映射,上面的代码应该可以简单地工作......用新资产替换旧资产。
我做错了吗?我需要在映射中指定什么东西才能让事情正常工作吗?或者,它是否只是 EF 方式必须删除然后添加这样的关联对象?
【问题讨论】:
标签: c# entity-framework entity-framework-4 one-to-one entity-framework-4.3