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数据库新增时 初始化表数据不成功

EF4 CTP5 代码优先实现中的实体拆分场景

EF Code First CTP5 - 使用属性名称作为外键的列名

WCF 数据服务和 EF4 CTP5,如何为查询配置默认的急切加载模式?

忽略 Entity Framework 4.1 Code First 中的类属性