我首先使用VS 2010和Entity Framework代码(版本6) . 我在它自己的上下文中有两个实体,我想在它们之间创建一对多的关系 .
上下文1具有以下实体:
public class MyTrust
{
public int MyTrustID { get; set; }
public string MyTrustName { get; set; }
}
和Context 2具有以下实体:
public class MyLocation
{
public int MyLocationID { get; set; }
public int MyTrustID { get; set; }
public virtual MyTrust MyTrust { get; set; }
}
使用以下Fluent API
modelBuilder.Entity<MyLocation>()
.HasRequired(m => m.MyTrust);
Context 2的迁移文件包含正确的密钥,但也为 MyTrust
创建了一个新表,该表已存在于其他上下文中 .
我知道我可以编辑迁移文件,但这不是解决方案 .
我的问题是,如何停止创建第二个 MyTrust
表 .
UPDATE
上面有一个重大缺陷,我将错误的代码粘贴到Context 2中 . 现在纠正了 . 道歉 .
1 回答
您正在使用所谓的有界上下文 . 这种情况的好处以及如何使用它们在_2800040中进行了解释 .
您遇到的问题是,在迁移过程中没有任何上下文可用于此部分:
请注意,如果遵守这些规则,您可以在所有上下文之间共享
MyTrust
类型(来自Lerman&Miller的书DbContext,第233页):UPDATE
在EF6中,您可以将多个上下文用于一个迁移路径 . 见this walkthrough .