C# 发现所有DbContext
我的应用程序中有两个DbContext,它们使用fluentapi配置一些模型。第一个DbContext的一个模型具有在第二个DbContext中配置的第二个模型的外键C# 发现所有DbContext,c#,.net,entity-framework,entity-framework-6,C#,.net,Entity Framework,Entity Framework 6,我的应用程序中有两个DbContext,它们使用fluentapi配置一些模型。第一个DbContext的一个模型具有在第二个DbContext中配置的第二个模型的外键 public class UserData { public double Id { get; set; } public string LastName { get; set; } public string FirstName { get; set; }
public class UserData
{
public double Id { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string FullName {
get {
return $"{this.FirstName} {this.LastName}";
}
}
public string Adress1 { get; set; }
public virtual BaseUserTreeData BaseUserTree { get; set; }
public double? BaseUserTreeId { get; set; }
public virtual List<DeviceData> Devices { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<BaseUserTreeData>().ToTable("sw_data_baseusertree");
modelBuilder.Entity<BaseUserTreeData>().Property(baseusertree => baseusertree.Id).HasColumnName("baseusertree_ID");
modelBuilder.Entity<BaseUserTreeData>().Property(baseusertree => baseusertree.Label).HasColumnName("label");
modelBuilder.Entity<BaseUserTreeData>().Property(baseusertree => baseusertree.ParentTreeId).HasColumnName("baseUserTree_ID_parent");
modelBuilder.Entity<BaseUserTreeData>().HasKey(baseusertree => baseusertree.Id);
modelBuilder.Entity<BaseUserTreeData>()
.HasOptional(tree => tree.ParentTree)
.WithMany(tree => tree.ChildTrees)
.HasForeignKey(tree => tree.ParentTreeId);
}
当我第一次对我的
UserDbContext
使用UserData
时,我的第二个DbContext
的OnModelCreating
没有被调用,因此BaseUserTreeData
映射没有被执行,实体框架6生成的查询是错误的。我看到我可以在单独的类中共享实体配置
,但是有没有办法告诉EF6调用我所有DbContext
的所有模型创建
?我认为你走错了路。这不是处理上下文
的推荐方法。如果模型之间有太强的关系
,您必须将模型集中在一个独特的上下文中。否则,您将不得不在未来面临许多问题。因此,我的建议是使用下面建议的模式
这是Microsoft EF团队建议的方式:
使用Web应用程序时,请根据使用上下文实例
请求
您可以使用以下文章阅读有关context
处理的更多信息:
我认为你走错了路。这不是处理
上下文的推荐方法。如果模型之间的关系太强
,您必须将模型集中在一个独特的上下文中。否则,您将不得不在未来面临许多问题。因此,我的建议是使用下面建议的模式
这是Microsoft EF团队建议的方式:
使用Web应用程序时,请根据使用上下文实例
请求
您可以使用以下文章阅读有关context
处理的更多信息:
为什么这里需要2个上下文
呢?因为我想使用第二个DbContext,而不使用第一个DbContext的所有实体,那么您使用它做什么呢?你打算用这个模式解决哪个问题?我想在我的上下文之间有一个弱链接。但是,可能所有具有关系的模型都必须映射并在相同的上下文中使用?我不想使用大的上下文,这就是为什么我想分离上下文。这是web应用程序
或桌面应用程序
?为什么这里需要2个上下文
?因为我想使用第二个DbContext,而不使用第一个DbContext的所有实体。那么,你用它做什么呢?你打算用这个模式解决哪个问题?我想在我的上下文之间有一个弱链接。但是,可能所有具有关系的模型都必须映射并在相同的上下文中使用?我不想使用大的上下文,这就是为什么我想分离上下文。这是web应用
或桌面应用
?我们已经遵循这个建议,每个请求一个上下文实例,但有时我们在一个请求中使用两种上下文。但你是对的,如果模型之间的关系太强,我们必须将模型集中在一个独特的上下文中。是的,这是真的。我也更新了我的帖子以反映你的评论。我们已经遵循这个建议,每个请求一个上下文实例,但有时我们在一个请求中使用两种上下文。但你是对的,如果模型之间的关系太密切,我们必须将模型集中在一个独特的环境中。是的,这是真的。我也更新了我的帖子以反映你的评论。