這裏就是我試圖完成:實體框架代碼優先和顯式接口
一些實體應該是「軟刪除,」所以我想添加一個名爲「現場請將isDeleted(及相應的列)。 「我希望這個屬性只能通過DAL訪問(可以通過朋友組件完成)。如果DAL可以通過接口(IDeletable)將所有這些實體對待,我也會喜歡它。
爲了達到這兩個目標,我可以讓IDeletable內部接口和實現此接口的類,我可以使用顯式接口:
bool IDeletable.IsDeleted { get; set; }
的DAL代碼可能會是這個樣子:
public void Delete<T>(T entity)
{
var d = entity as IDeletable;
if(d != null)
//soft delete
d.IsDeleted = true;
else
//hard delete
//....
}
問題是,EF Code First無法生成列,據我所知。我嘗試過使用表達式,但是當我嘗試投射到IDeletable時它會投訴。
有沒有辦法強制EF Code First創建列,而無需表達式?
實體框架支持內部屬性。請參閱下面的答案。 – 2013-11-15 20:15:25