Entity Framework 流畅 API:复合键 -> 循环关系
Entity Framework Fluent API: Composite key -> Circular relationships
有3个table:
- Parent (Parents)
- Child (Child仁)
- 一个child到另一个的过渡(跳转)
比如想像书。就是书本身,就会tableParents。书有页数,Children。在页面上有 footnotes-the 个指向其他页面的链接,它会跳转。
对于Children,我使用复合键(新的{ChildId,ParentId}),因为类比书籍,第1页可以在各种书籍中找到。在现实世界中是字符串的ID,它包含一个代码。
Table 跳跃。它描述了一个脚注。将转换的页面 ID (SourceChildId) 和将转换的页面 ID (TargetChildId)。由于转换发生在同一本书 (Parent) 中,该书使用一个字段作为两个键 — ParentId.
我认为这个结构是合乎逻辑的,直到我尝试 Udpdate-Database 命令,我得到一个异常:"Circular relationships with referential integrity constraints detected."
这个戒指参考了我最喜欢的 table Jumps...我真的很喜欢他们的 lokalitetu,但是....
请帮我为这个任务模拟CodeFirst的模型数据(类比书籍,页面和脚注页面)。附上测试项目。
Visual Studio 项目。 ~10mb。 google 驱动器:
https://drive.google.com/open?id=0B2Je5INk3Cy2bXdfWHZSTm1lUms
最良好的祝愿,
谢尔盖
我解决了这个问题。
2 个变化。
1) 从 Jump 对象引用中脱离出来,只保留属性。设置流畅 Api 喜欢:
modelBuilder.Entity<Child>().HasMany(x => x.JumpsFrom).WithRequired().HasForeignKey(x => new { x.SourceId, x.ParentId });
modelBuilder.Entity<Child>().HasMany(x => x.JumpsTo).WithOptional().HasForeignKey(x => new { x.TargetId, x.ParentId });
2) 在设置 Parent.FirstChildId 之前进入 Seed() 我调用了 context.SaveChanges()
已解决的问题项目:
https://drive.google.com/open?id=0B2Je5INk3Cy2aTB4ZVNBZEVfbEE
有3个table:
- Parent (Parents)
- Child (Child仁)
- 一个child到另一个的过渡(跳转)
比如想像书。就是书本身,就会tableParents。书有页数,Children。在页面上有 footnotes-the 个指向其他页面的链接,它会跳转。
对于Children,我使用复合键(新的{ChildId,ParentId}),因为类比书籍,第1页可以在各种书籍中找到。在现实世界中是字符串的ID,它包含一个代码。
Table 跳跃。它描述了一个脚注。将转换的页面 ID (SourceChildId) 和将转换的页面 ID (TargetChildId)。由于转换发生在同一本书 (Parent) 中,该书使用一个字段作为两个键 — ParentId.
我认为这个结构是合乎逻辑的,直到我尝试 Udpdate-Database 命令,我得到一个异常:"Circular relationships with referential integrity constraints detected." 这个戒指参考了我最喜欢的 table Jumps...我真的很喜欢他们的 lokalitetu,但是....
请帮我为这个任务模拟CodeFirst的模型数据(类比书籍,页面和脚注页面)。附上测试项目。
Visual Studio 项目。 ~10mb。 google 驱动器:
https://drive.google.com/open?id=0B2Je5INk3Cy2bXdfWHZSTm1lUms
最良好的祝愿, 谢尔盖
我解决了这个问题。 2 个变化。
1) 从 Jump 对象引用中脱离出来,只保留属性。设置流畅 Api 喜欢:
modelBuilder.Entity<Child>().HasMany(x => x.JumpsFrom).WithRequired().HasForeignKey(x => new { x.SourceId, x.ParentId });
modelBuilder.Entity<Child>().HasMany(x => x.JumpsTo).WithOptional().HasForeignKey(x => new { x.TargetId, x.ParentId });
2) 在设置 Parent.FirstChildId 之前进入 Seed() 我调用了 context.SaveChanges()
已解决的问题项目: https://drive.google.com/open?id=0B2Je5INk3Cy2aTB4ZVNBZEVfbEE