1
我使用EF 4.2(數據庫優先)與DBContext T4模板創建我的POCO類。這個作品非常好,但現在我stumpled了一個問題,有一個抽象基類:實體框架4 + DBContext T4 +抽象基類
我需要我的T4生成POCO類從具有抽象屬性的自定義抽象類繼承:
//my abstract base class (shortened)
public abstract class BaseClass {
public abstract int? Property1 { get; set; }
public abstract int? Property2 { get; set; }
// a lot of methods that work with above properties
}
//my T4 generated entity (shortened)
public partial class Entity {
public Nullable<int> Property1 { get; set; }
public Nullable<int> Property2 { get; set; }
}
//and a partial class to make the T4 entity inherit from my abstract class
public partial class Entity : BaseClass {
}
我的問題是編譯器不會構建它,因爲T4類中的屬性沒有標記爲「覆蓋」。 LINQ 2 SQL可以選擇更改實體屬性的繼承修飾符,但在EF模型設計器中找不到此選項。
有沒有辦法告訴EF模型設計器和T4模板將某些屬性標記爲覆蓋(當然,我可以更改生成的C#代碼,但當T4再次運行時,這些更改會被覆蓋)?有沒有其他的方法可以使這個編譯&工作?
非常感謝, 〜saxx
更新1:修正了一個錯字。
感謝您的回覆。你知道如果我使用解決方案3,Linq to Entities是否還能工作? – 2012-02-15 11:12:36
我最終使用了你的解決方法1.這是一個非常糟糕的黑客攻擊,我討厭它(並提出了20行代碼註釋來解釋爲什麼我討厭它),但它有效。謝謝。 – 2012-02-17 11:49:28