将EF 4.1代码优先模型映射到数据库表

时间:2011-10-07 16:38:57

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

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

  • 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表?我在搜索中没有看到澄清这一点。

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

2 个答案:

答案 0 :(得分:3)

您可以在OnModelCreating课程中覆盖DbContext的{​​{1}}方法:

EFDbContext

有关详细信息,请参阅this帖子。

答案 1 :(得分:1)

你可以这样使用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");
    }
}

有关详细信息,请参阅: