2012-05-23 56 views
4

我需要映射一些自動生成的類,我不想更改爲obviouse reasions(它是自動生成的!)。如何使用流利的API添加主鍵 - 實體框架EF 4.x代碼優先

那麼是否有可能使用實體框架流暢的API定義一個主鍵(在我的情況下爲4.3)?作爲ComplexType處理屬性由於NULL值而導致DbUpdateExcetion。將主鍵添加到生成的類可能是一個解決方案,但不適合我,POCO必須保持不變。請幫忙!謝謝。

目前,我忽略了因爲...

ModelValidationException 
EntityType 'Attribute' has no key defined. Define the key for this EntityType. 
EntitySet 'Attributes' is based on type 'Attribute' that has no keys defined. 

這裏的屬性是shortend示例代碼:

public class Item 
{ 
    public ID {set;get;} 
    public Attribute[] Attributes {set;get;} 
} 
public class Attribute 
{ 
    public SomeComplexType misc1 {set; get;} 
    public SomeComplexType misc2 {set; get;} 
} 

public class ItemDb : DbContext 
{ 
    public ItemDb(string connection) : base(connection) {} 

    public DbSet<Item> Items { get; set; } 

    protected override void OnModelCreating(DbModelBuilder builder) 
    { 
     // currently I am ignoring the Attributes 
     builder.Ignore<Attributes>(); 
    } 
} 

回答

4

可以使用HasKey方法。

builder.Entity<FooBar>().HasKey(...); 
+0

只在現有的屬性,因爲我知道 – Hans

+0

是的。 Beucase實體框架中的每個實體都必須具有關鍵屬性。 –

+0

@ cincura.net:嗨,這是EF的財產每個表有主鍵?我的意思是我不能沒有主鍵在EF中的表? – Prateek