2012-01-14 156 views
1

我有以下的類/實體:實體框架重複列

public class Product : ISaleable 
    { 


     public void ProcessSale() 
     { 
      return; 
     } 

     [NotMapped] 
     private int id { get; set; } 
     [NotMapped] 
     private string productName { get; set; } 
     [NotMapped] 
     private decimal price { get; set; } 
     [NotMapped] 
     private TaxClass taxClass { get; set; } 
     [NotMapped] 
     private int quantity { get; set; } 
     [NotMapped] 
     private Member memberAssociation { get; set; } 


     public TaxClass TaxClass 
     { 
      get 
      { 
       return this.taxClass; 
      } 
      set 
      { 
       this.taxClass = value; 
      } 
     } 
     public int Quantity 
     { 
      get 
      { 
       return this.quantity; 
      } 
      set 
      { 
       this.quantity = value; 
      } 
     } 
     public string ProductName 
     { 
      get 
      { 
       return this.productName; 
      } 
      set 
      { 
       this.productName = value; 
      } 
     } 
     public decimal Price 
     { 
      get 
      { 
       return this.price; 
      } 
      set 
      { 
       this.price = value; 
      } 
     } 
     public Member MemberAssociation 
     { 
      get 
      { 
       return this.memberAssociation; 
      } 
      set 
      { 
       this.memberAssociation = value; 
      } 
     } 
     [Key] 
     public int ID 
     { 
      get 
      { 
       return this.id; 
      } 
      set 
      { 
       this.id = value; 
      } 
     } 
    } 

正如你所看到的,這個類從ISaleable繼承和有型TaxClass的兩個元素。現在,當項目運行時,EF試圖爲此實體創建表時,我會得到以下例外:

每個表中的列名必須是唯一的。表'Product'中的列名稱'TaxClass_ID' 指定了多次。

我不知道爲什麼會發生這種情況,任何幫助表示讚賞。

回答

2

嘗試重命名public TaxClass TaxClasspublic TaxClass MyTaxClass

+0

這工作!我也必須重新命名'Public MemberAssocation'。謝謝! – gunwin 2012-01-14 19:07:41

+1

沒問題!我應該指出,你首先得到錯誤的原因是關係(可能)尚未建立。因此EF不確定您的TaxClass與您的產品的關係。看看這裏的文章瞭解更多信息:http://elegantcode.com/2009/12/15/entity-framework-poco-ef4-a-simple-mapping/ – Nick 2012-01-14 19:22:30

+0

我改變了列的名稱與財產(f => f.Id).HasColumnName(「MyNewID」); 不確定這是否適用於您。這個設置被稱爲Fluent API btw。 – jonas 2013-02-19 12:43:17