【问题标题】:EF4 CTP5 Code First approach ignores Table attributesEF4 CTP5 Code First 方法忽略表属性
【发布时间】: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 属性。它还复数了它正在搜索的名称(公司而不是公司。)如何将类映射到表名?

【问题讨论】:

    标签: entity-framework-4 code-first


    【解决方案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。

      【讨论】:

        猜你喜欢
        • 2011-07-21
        • 2012-05-10
        • 1970-01-01
        • 1970-01-01
        • 2011-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多