EF4 CTP5 Code First 方法忽略表属性
Posted
技术标签:
【中文标题】EF4 CTP5 Code First 方法忽略表属性【英文标题】:EF4 CTP5 Code First approach ignores Table attributes 【发布时间】:2010-12-20 20:49:37 【问题描述】:我使用的是 EF4 CTP5 代码优先方法,但无法使其正常工作。我有一个名为“Company”的类和一个名为“CompanyTable”的数据库表。我想将 Company 类映射到 CompanyTable 表,所以有这样的代码:
[Table(Name = "CompanyTable")]
public class Company
[Key]
[Column(Name = "CompanyIdNumber", DbType = "int")]
public int CompanyNumber get; set;
[Column(Name = "CompanyName", DbType = "varchar")]
public string CompanyName get; set;
然后我这样称呼它:
var db = new Users();
var companies = (from c in db.Companies
select c).ToList();
但是它出错了:
对象名称“dbo.Companies”无效。
它显然不尊重类的 Table 属性,即使它说 here 支持 Table 属性。它还复数了它正在搜索的名称(公司而不是公司。)如何将类映射到表名?
【问题讨论】:
【参考方案1】:在继承自 DbContext 的类上,覆盖 OnModelCreating 方法
protected override void OnModelCreating(ModelBuilder modelBuilder)
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Company>().ToTable("dbo.CompanyTable");
【讨论】:
【参考方案2】:忘记在我的架构项目中添加对 ctp5 dll 的引用,而是使用 System.Data.Linq.Mapping。
【讨论】:
以上是关于EF4 CTP5 Code First 方法忽略表属性的主要内容,如果未能解决你的问题,请参考以下文章
EF4 Code only ctp5:如何设置连接字符串 devart oracle?
ef4.4 code first数据库新增时 初始化表数据不成功
EF Code First CTP5 - 使用属性名称作为外键的列名