wgp*_*ubs 10 c# entity-framework one-to-one entity-framework-4 entity-framework-4.3
我使用EF代码建立了一对一关系,首先遵循此处规定的方法:
我的映射看起来像这样......
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Asset>()
.HasRequired(i => i.NewsItem)
.WithOptional(e => e.Asset)
.Map(m => m.MapKey("NewsItemId"));
}
Run Code Online (Sandbox Code Playgroud)
但是当我得到这个例外......
来自'Asset_NewsItem'AssociationSet的关系处于'已删除'状态.给定多重约束,相应的'Asset_NewsItem_Source'也必须处于'已删除'状态.
每当此代码运行时:
var entry = _db.NewsItems.Find(id);
entry.Asset = new Asset();
_db.DbContext.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
如果我明确标记与NewsItem相关联的先前资产以进行删除,我可以得到一些工作,但它看起来有点不稳定.看起来,基于映射,上面的代码应该简单地工作...用新的资产替换旧的资产.
难道我做错了什么?我需要在映射中指定一些能让事情正常运行的东西吗?或者,它只是EF方式必须删除,然后添加这样的关联对象?
这是EF的工作方式.您已加载包含相关资产的条目,并且知道您要分配新资产.此操作将使您的旧资产与任何条目无关,但映射不允许(您指定Asset必须具有相关性Entry).因此,在分配新资产以满足映射约束之前,必须删除旧资产或将其分配给另一个条目.
| 归档时间: |
|
| 查看次数: |
10256 次 |
| 最近记录: |