加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – EF代码首先,如何使用不同的模式注册相同的表名?

发布时间:2020-12-12 08:49:49 所属栏目:MsSql教程 来源:网络整理
导读:我们正在使用Entity Framework,Code First,而在我们的数据库中,我们有几个具有相同名称但不同Schema的表. 我也将模型放在两个不同的命名空间中. 我如何在DbContext类中注册这些表? protected override void OnModelCreating(DbModelBuilder modelBuilder){ m
我们正在使用Entity Framework,Code First,而在我们的数据库中,我们有几个具有相同名称但不同Schema的表.

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

我如何在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类与类名称匹配(无命名空间).因为在同一个上下文中映射的每个类名必须是唯一的,不同的命名空间不会使其具有不同的类名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读