2011-10-07 181 views
1

我在設計我的應用程序時一直在嘗試模型優先方法。我們通常喜歡在較大的數據庫中爲我們的表添加一個前綴,以便查找內容更加容易。例如:將EF 4.1代碼優先模型映射到數據庫表

  • 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"/> 

什麼我需要改變,以使交易對象被鏈接到sc_Transactions表?我沒有看到我的搜索,澄清了這一點。

作爲第二個問題,我必須手動創建我的表嗎?

回答

3

您可以在EFDbContext類覆蓋從DbContextOnModelCreating方法:

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後獲取更多信息。

+0

我不得不使用'modelBuilder.Entity ().ToTable( 「sc_Transaction」);'而不是作爲記錄[這裏](http://forums.asp.net/t/1651092.aspx)。 –

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"); 
    } 
} 

欲瞭解更多信息,請參閱:

+0

我也喜歡這種方法。看起來好像你可以在每個你想重命名的字段上使用'[Column(「name」)]'。 –