实体框架数据库首先是多个模式重复的表名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实体框架数据库首先是多个模式重复的表名相关的知识,希望对你有一定的参考价值。
我正在使用具有多个模式的现有数据库。此外,不同的模式重复表名称。 Code First部署不是一种选择。
在生成我的edmx时,我遇到了多个问题,但我关注的主要问题是命名约定 - 我想在所有实体前面加上模式名称,除非模式名称是dbo。
所以例如,我在emp模式和dbo模式中都有一个Person表,我想有两个实体 - emp_Person和Person。
我知道可以添加前缀(我在codeplex找到了一个例子),但看起来它总是会在任何地方应用相同的前缀。
有什么建议或链接吗?
答案
Code First可以满足您的需求。在提到时为您的类添加前缀,然后让EF处理幕后的映射。您可以在单个上下文中执行此操作:
public class Person
{
public int PersonId { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
...
}
public class empPerson
{
public int PersonId { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
...
}
现在只需在您的上下文中使用流畅配置来映射:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Person>()
.ToTable("Person", "schema1")
.HasKey(p => p.PersonId);
modelBuilder.Entity<empPerson>()
.ToTable("Person", "emp")
.HasKey(p => p.PersonId);
// other fluent code for relationships, etc.
}
见https://msdn.microsoft.com/en-us/data/jj591617.aspx#2.3
以上是关于实体框架数据库首先是多个模式重复的表名的主要内容,如果未能解决你的问题,请参考以下文章
创建实体时的表名(包含/正则表达式) - 实体框架 - 表前缀
具有多个 MySql 模式的实体框架多个 DbContext