2015-03-13 95 views
0

我有下面的類:EF代碼第一列命名

public class CompanyInfo 
    { 
     [Key] 
     public string CompanyId { get; set; } 
     public string CompanyName { get; set; } 
     public Address CompanyAddress { get; set; } 
    } 

與相應的地址類:

public class Address 
    { 
     public string StreetAddress { get; set; } 
     public string StreetAddress2 { get; set; } 
     public string City { get; set; } 
     public string State { get; set; } 
     public string Zip { get; set; } 
     public string Plus4 { get; set; } 
    } 

這裏長眠着我的問題...地址時,產生類型的列名:

CompanyAddress_StreetAddress 

在那裏我會喜歡的東西沿着線:

PrimaryStreetAddress 

鑑於地址類的成員都沒有用於與數據註釋(使用域模型/視圖模型結構)使用容易獲得並且在所述控制器被映射爲這樣:

var company = new CompanyInfo 
      { 
       CompanyId = GenerateAccountNumber(), 
       CompanyName = addCompany.CompanyName, 
       CompanyAddress = new Address 
       { 
        StreetAddress = addCompany.StreetAddress, 
        StreetAddress2 = addCompany.StreetAddress2, 
        City = addCompany.City, 
        State = addCompany.State, 
        Zip = addCompany.Zip, 
        Plus4 = addCompany.Plus4 
       }, 

        -- some other fields here -- 

      }; 

我知道ViewModel並不是恰當的地點,因爲它只是在控制器中映射回模型。

設置可重用類「地址」的列名的正確方法是什麼?我假設這可以通過FluentAPI完成,如果實體框架,但我不確定如何繼續。

任何幫助將不勝感激。

+0

可能重複http://stackoverflow.com/questions/10554888/change-table-and-column-name-mappings-entity-framework -v4-3) – mason 2015-03-13 13:17:40

+0

不重複。仔細觀察獨特的用例。我在提交之前看到了這一點,並且與我的用例不符。 – New2ASPMVC 2015-03-13 13:29:31

+0

@mason由於OP想要命名其模型中不存在或由EF – 2015-03-13 13:30:04

回答

0

您可以在context方法OnModelCreating覆蓋指定CompanyInfoAddress之間的關係,並且可以指定外鍵名,將確定的關係。

public class DataContext : DbContext { 

    //other properties 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<CompanyInfo>() 
      .HasRequired(m => m.CompanyAddress) 
      .WithOptional() 
      .Map(m => { m.MapKey("CompanyAddressId"); }); 
    } 
} 
[更改表和列名映射實體框架V4.3(的
+0

我試圖避免使用外鍵,只是動態地重用地址類爲應用程序內的所有地址使用情況,但這絕對是一個可行的解決方案。謝謝! – New2ASPMVC 2015-03-13 13:49:49

0

使用ForeignKey數據註釋,以便ef不會使用自己的約定創建自己的外鍵。

public class CompanyInfo 
{ 
    [Key] 
    public string CompanyId { get; set; } 
    public string CompanyName { get; set; } 
    public Address CompanyAddress { get; set; } 
    [ForeignKey("CompanyAddress")] 
    public string PrimaryStreetAddress { get; set; } 
}