【问题标题】:Mapping EF 4.1 code-first models to database tables将 EF 4.1 代码优先模型映射到数据库表
【发布时间】:2011-10-07 16:38:56
【问题描述】:

在设计我的应用程序时,我一直在尝试模型优先的方法。我们通常喜欢在较大的数据库中为我们的表添加前缀,以便更容易找到内容。例如:

  • sc_ = 购物车表
  • wb_ = 水费表
  • ea_ = 就业申请表

到目前为止,我设置的课程看起来像这样。

public class EFDbContext : DbContext
{
    public DbSet<Transaction> Transactions { get; set; }
    public DbSet<TransactionItem> TransactionItems { get; set; }
    public DbSet<Response> Response { get; set; }
}

Web.config(当前设置用于本地数据库测试):

    <add name="EFDbContext" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=database" providerName="System.Data.SqlClient"/>

我需要进行哪些更改才能将 Transaction 对象链接到 sc_Transactions 表?我在搜索中没有看到澄清这一点。

作为第二个问题,我是否必须手动创建表?

【问题讨论】:

    标签: asp.net-mvc entity-framework-4.1 ef-code-first


    【解决方案1】:

    您可以在 EFDbContext 类中覆盖 DbContext 中的 OnModelCreating 方法:

    public class EFDbContext : DbContext
    {
        public DbSet<Transaction> Transactions { get; set; }
        public DbSet<TransactionItem> TransactionItems { get; set; }
        public DbSet<Response> Response { get; set; }
    
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Transaction>().MapSingleType().ToTable("someTableNameHere");
        }
    }
    

    请参阅this 帖子了解更多信息。

    【讨论】:

    • 我不得不改用modelBuilder.Entity&lt;Transaction&gt;().ToTable("sc_Transaction");,如记录的here
    【解决方案2】:

    你可以像这样使用System.ComponentModel.DataAnnotations

    [Table("tblUser")]
    public class User
    {
        public int ID { get; set; }
        public string Name { get; set; }
    }
    

    或者使用 EF 4,您可以覆盖 OnModelCreating 方法来映射您的表,这是非常强大的功能,因为您可以一次映射和调整许多东西。

    public class MyContext: DbContext
    {
        DbSet<User> Users { get; set; }
    
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<User>().MapSingleType().ToTable("tblUser");
        }
    }
    

    更多信息见:

    【讨论】:

    • 我也喜欢这种方法。看来您也可以在要重命名的每个字段上使用 [Column("name")]
    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 2014-08-31
    相关资源
    最近更新 更多