2012-07-23 69 views
1

我第一次使用實體框架代碼,我有2個實體聲明,像這樣:DbContext.Set <TEntity>返回派生類類型

[Table("BaseTable")]  
public class BaseEntity 
{ 
    public string SomeProperty{get; set;} 
} 

[Table("DerivedTable")] 
public class DerivedEntity 
: BaseEntity 
{ 
    public string SomeOtherProperty {get; set;} 
} 

問題是,當我呼籲的DbContext它總是返回通用的設置方法實體爲DerivedEntity類型。 (EF是建立正確的表映射到數據庫只是沒有returing從set()方法預期的實體類型)

DbContext.Set<BaseEntity>(); 

我怎麼能強迫Set<BaseEntity>();返回實體BaseEntity類型,所以我只能更新表?

回答

1

你不能。 EF在實體級別上工作而不是在表級別上。因此,如果您的實體是DerivedEntity類型,它將永遠不會僅作爲BaseEntity加載。修改附加實體時,EF將只爲修改的列創建更新命令,因此如果僅更改BaseEntity表的屬性,則不應修改第二個表。