sql-server - EF代码优先,如何将相同的表名注册到不同的模式?

标签 sql-server entity-framework

我们使用 Entity Framework 、Code First,在我们的数据库中,我们有几个具有相同名称但处于不同架构中的表。

我还将模型放在两个不同的命名空间中。

如何在我的 DbContext 类中注册这些表?

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Data.Schema1.Contact>().ToTable("Contact", "schema1");
    modelBuilder.Entity<Data.Schema2.Contact>().ToTable("Contact", "schema2");
}

提前感谢您的帮助!

最佳答案

您的类必须具有不同的名称,或者您必须为每个架构使用单独的上下文。

其原因是内部使用的 EDM 模型。即使您使用代码优先,它仍然会在后面创建 EDM 模型,并且它必须遵循其所有限制以及 POCO 类与 CSDL 模型中定义的实体匹配的方式。 EDM 中的实体和 POCO 类通过类名(没有命名空间)进行匹配。因此,在同一上下文中映射的每个类名必须是唯一的,不同的命名空间不会使其成为不同的类名。

关于sql-server - EF代码优先,如何将相同的表名注册到不同的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8547150/

相关文章:

sql-server - SSIS - 派生列 - 案例陈述 - Charindex 和 Substring

sql - 查询 View 是否比执行一次查询慢?

entity-framework - ExecuteStoreQuery 需要什么来尊重关系?

c# - 无法使 mvc mini 分析器与 EF 4.2 一起使用

entity-framework - 如何 POST/PATCH 到 Azure 移动服务上的多对多关系实体?

c# - ASP.NET MVC3 和 Entity Framework - 一个 View 中的一对多关系

SQL Server 连接复杂子查询

sql-server - 如何将 TClientDataSet 与 SQL Server View 一起使用? (或替代方案)

sql-server - 清除 SQL 数据库中的日志 - Serilog

silverlight - Silverlight 客户端如何访问 Azure 存储的数据?