【发布时间】:2017-05-18 10:16:50
【问题描述】:
我正在尝试使这种多对可能的关系正常工作,这是架构
我的实体有以下配置,第一个 ContentBranch 实体:
configuration.HasMany(e => e.ContentLeafs)
.WithMany(e => e.ContentBranches)
.Map(m => m.MapLeftKey("ContentLeafId").MapRightKey("ContentBranchId").ToTable("ContentBranchLeafs"));
然后是 ContentLeaf 实体:
configuration.HasMany(e => e.ContentBranches)
.WithMany(e => e.ContentLeafs)
.Map(e => e.MapLeftKey("ContentBranchId").MapRightKey("ContentLeafId").ToTable("ContentBranchLeafs"));
我正在尝试执行以下测试代码:
theBranch.ContentLeafs.Add(theLeaf);
await contentBranchRepository.Update(theBranch);
问题出在映射上,因为我得到了以下异常:
保存不为其关系公开外键属性的实体时发生错误。 EntityEntries 属性将返回 null,因为无法将单个实体标识为异常源。通过在实体类型中公开外键属性,可以更轻松地在保存时处理异常。有关详细信息,请参阅 InnerException。
内部异常:
无效的对象名称“dbo.ContentLeafContentBranches”。
有谁知道为什么 EF 在我提供显式表名时使用约定?请帮忙。
【问题讨论】:
-
我的代码中有这个并且它正在工作 HasMany(s => s.ContentLeafs) .WithMany(c => c.ContentBranches) .Map(cs => { cs.MapLeftKey("ContentBranchId "); cs.MapRightKey("ContentLeafId"); cs.ToTable("ContentBranchLeafs"); });
标签: c# entity-framework