实体框架中具有相同表名注释的类冲突



我正在开发一个asp.net应用程序,但是我在实体框架方面遇到了问题。

在我的应用程序中,我同时使用两个不同的数据库,当两个数据库具有相同的表名时,问题就出现了。

的例子:示例代码图像

在这个图像中,我们有两个类,它们在注释中具有相同的名称并且具有相同的主键,区别在于结构的其余部分不同于另一个。第一个类指向一个数据库,另一个指向另一个数据库。

声明当我必须发出请求时,实体框架返回一个错误。

不能将表'TBL_EMPRESAS'用于实体类型' empresaddomain ',因为它正在用于实体类型'EmpresaAuthenticationDomain'和潜在的其他实体类型,但没有链接关系。向主键属性上的' empresdomain '添加一个外键,并指向映射到'TBL_EMPRESAS'的另一个实体类型上的主键。

您将它们添加到相同的上下文中,这会导致EF认为它们实际上是相同的类型,但它们不是。

你应该为每个数据库创建一个单独的Context类,并且只在它所属的Context类中添加DbSet。

像这样(为了可读性,省略了其他内容):

public class MyContext : DbContext {
public DbSet<EmpresaDomain> Empresas { get; set; }
}
public class MyOtherContext : DbContext {
public DbSet<EmpresaAuthenticationDomain> EmpresesAuthentications { get; set; }
}

希望这对你有帮助!

最新更新