如何让Entity Framework Db Frist模式下的Entity继承关系?

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; }}
}

打开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模板。

时间: 2024-07-30 23:55:02

如何让Entity Framework Db Frist模式下的Entity继承关系?的相关文章

Entity framework DB first---(1)

Db first 系列-1 1) 创建Db 文件,并指定connectionstring name: public class Db : DbContext { public Db() : base("prodinner") { } public DbSet<Country> Countries { get; set; } public DbSet<Chef> Chefs { get; set; } public DbSet<Meal> Meals

ADO.NET Entity Framework 在哪些场景下使用?

在知乎回答了下,顺手转回来. Enity Framework已经是.NET下最主要的ORM了.而ORM从一个Mapping的概念开始,到现在已经得到了一定的升华,特别是EF等对ORM框架面向对象能力的升华.切实地说,就是ORM让数据库在整个应用过程中更好地被封装和抽象化. ORM一开始只是Mapping,最基础的就是表与类的对应.Column和属性的对应,这只是最基础的.在这个层次上,数据库对象通过Mapping在面向对象语言层面,也就是业务层面被封装成了业务对象,然后允许以操作业务对象的方式对

Entity Framework Core系列之什么是Entity Framework Core

前言 Entity Framework Core (EF Core)是微软推荐的基于.NET Core framework的应用程序数据访问技术.它是轻量级,可扩展并且支持跨平台开发.EF Core是一种对象关系映射器(ORM).通过应用程序实体对象和关系数据库中的数据的映射,使得开发人员能够以面向对象的方式处理数据. 为什么使用ORM 大多数开发框架都包含库,这些库允许通过类似记录集的数据结构访问关系数据库中的数据.下面的代码示例演示了一个典型的场景,即数据从数据库中检索并存储在ADO.NET

Entity Framework 学习系列(1) - 认识理解Entity Framework

目录 写在前面 什么是Entity Framework EF的优缺点 1.优点 2.缺点 如何理解ORM EF执行的原理 写在前面 在使用.net mvc 开发的时候.为了高效的开发,我们常常会搭配ORM框架使用. 而Entity Framework正是微软开发的一种ORM框架.一般情况下,我们很少用全称, 而是直接用EF.因为都是微软的产品,所以通常它和MVC是黄金搭档. 什么是Entity Framework 全称ADO.NET Entity Framework,简称为EF.优点是能高效的开

Entity Framework - 基于外键关联的单向一对一关系

代码的世界,原以为世界关系很简单,确道是关系无处不在.NET世界里ORM框架中EntityFramework作为其中翘楚,大大解放了搬砖工作的重复工作,着实提高了不少生产力,而也碰到过不少问题!比如关系的映射! 一对一关系的映射: 用户账户密码信息表:包含用户名 密码 邮箱等账户登录时的信息 public class SystemAccount { public SystemAccount() { Id = DateUtils.GeneratedNewGuid(); } public Guid

Entity Framework Code-First(23):Entity Framework Power Tools

Entity Framework Power Tools: Entity Framework Power Tools (currently in beta 3) has been released. EF Power Tools is useful mainly in reverse engineering and generating read-only entity data model for code-first. Download and install Power Tools fro

Entity Framework Code First 模式-建立一对一联系

使用的例子为教室(ClassRoom),教室里的多媒体设备(Device),一个教室里有一套多媒体设备,一套多媒体设备只放在一个教室里. 1.Data Annotations方式 需要在任意一方的主键属性上加ForeignKey,以下是这两种方式的代码以及结果 方法一: 代码: public class Device { [Key, ForeignKey("ClassRoom")] public Guid ClassRoomId { get; set; } public virtual

Entity Framework Code First 模式-建立一对多联系

一.建立一对多联系 使用的例子为Product与Category,一个种类(Product)对应多个商品(Product) 1.外键列名默认约定 在"一"这边的实体增加一个集合属性(public virtual ICollection<Product> Products { get; set; }),在"多"这边的实体增加两个属性(1.public int CategoryID { get; set; } 2.public virtual Categor

重新认识了下Entity Framework

什么是Entity Framework Entity Framework是一个对象关系映射O/RM框架. Entity Framework让开发者可以像操作领域对象(domain-specific objects)那样操作关系型数据(relational data). Entity Framework减少了大部分通常需要编写的数据操作代码. Entity Framework中可以使用LINQ来查询数据,使用强类型(strongly typed objects)来检索和操作数据. Entity F