如何讓Entity Framework Db Frist模式下的Entity繼承關系?
阿新 • • 發佈:2017-05-24
clas use hide closed 相關 ase 創建 color 修改
1、使用DB Frist模式創建實體數據模型
Db Frist創建實體數據模型(創建edmx並不是重點,各位隨意即可),此處取名ZeroCodeDB,所得文件如圖所示;
其中紅框中的文件(ZeroCodeDB.tt)是各實體的生成的關鍵代碼,即Entity的T4模板文件,本文正是要對此文件動刀。
2、修改Entity T4模板文件實現繼承
新建類庫創建父類和接口代碼如下
namespace ZeroCode.DemoLib { public class DeomClass{} public interface IDemoInterface<outView CodeTKey> where TKey : IEquatable<TKey> { TKey Id { get; }} }
打開ZeroCodeDB.tt文件(T4模板代碼高亮需要安裝T4模板編輯器,工具-->擴展和更新-->聯機-->搜索“T4 editor”),
找到Entity的類名相關生成代碼如下方左圖(大約第314行),對應生成的User實體如右圖所示。
即EntityClassOpening()方法生成了字符串 “public partial class User ”
情景一:都繼承某類
情景假設:不需要EF生成的繼承關系,將所有實體都繼承 ZeroCode.DemoLib.DemoClass
完成上述情景需要兩個步驟:
(1)在ZeroCodeDB.tt代碼中添加類庫ZeroCode.DemoLib的引用;
(2)替換 _code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)),保存運行T4模板。
如何讓Entity Framework Db Frist模式下的Entity繼承關系?