1. 程式人生 > >如何讓Entity Framework Db Frist模式下的Entity繼承關系?

如何讓Entity Framework Db Frist模式下的Entity繼承關系?

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<out
TKey> where TKey : IEquatable<TKey> {  TKey Id { get; }} }
View Code

打開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繼承關系?