如何在EF6代码优先中将泛型类型与数据库上下文一起使用

兹维克

例如,假设我有4个不同的实体,每个实体都实现将实体添加到数据库的Add()方法:

public class Profile
{
    ...

    public void Add()
    {
        this._dbContext.Profile.Add(this);
        this._dbContext.SaveChanges();
    }

    ...
}

现在,我想拥有一个通用类,该通用类在一个抽象类中而不是X个类中实现这种行为。所以我尝试了以下方法:

public abstract class Entity<TEntity> where TEntity : class 
{
    protected DbContext _dbContext;

    protected Entity()
    {
        this._dbContext = new SMTDBContext();
    }

    public void Add()
    {
        this._dbContext.Set<TEntity>().Add(this);
        this._dbContext.SaveChanges();
    }
}

当然,它不会担心,因为“ this”不是TEntity ...但是将来会!到目前为止,我一直试图寻找一个做类似的事情但没有成功的人。

古吉克

您的问题的解决方案是使用通用约束的定义更明确。定义约束,因为TEntity必须是Entity <TEntity>的子类,即使用where TEntity : Entity<TEntity>代替where TEntity : class

public abstract class Entity<TEntity> where TEntity : Entity<TEntity>
{
    protected DbContext _dbContext;

    protected Entity()
    {
        this._dbContext = new SMTDBContext();
    }

    public void Add()
    {
        this._dbContext.Set<TEntity>().Add((TEntity)this);
        this._dbContext.SaveChanges();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

EF6代码优先:使用Fluent API声明外键

来自分类Dev

如何在EF6代码优先中对数据库上下文使用通用类型

来自分类Dev

更改模型时,EF6代码优先删除表(不是整个数据库)

来自分类Dev

有界上下文和EF代码优先-如何将它们放在一起?

来自分类Dev

EF6代码优先-使用不匹配的外键配置一对一关系

来自分类Dev

EF6代码迁移-数据库不同,但相同

来自分类Dev

EF6代码优先数据库初始化期间发生InvalidOperationException(必须显式配置此关联的主要末尾)

来自分类Dev

MVC /代码优先:如何在同一数据库上下文中添加更多表?

来自分类Dev

使用EF6代码优先的MySQL现有数据库-带有脚手架的控制器创建错误

来自分类Dev

在“与SQLITEOPENHELPER一起使用预加载的SQLITE数据库”示例中无法解析符号“上下文”

来自分类Dev

将现有数据库表添加到EF6代码优先存储库

来自分类Dev

应用EF 6代码优先的迁移-找不到上下文类型

来自分类Dev

如何为一个模型创建两个导航属性(EF6代码优先)

来自分类Dev

如何在飞行中将BLOB数据类型与不同的数据库一起使用?

来自分类Dev

带有新数据库的EF6生成“自创建数据库以来,支持<Database>上下文的模型已更改。”

来自分类Dev

数据库迁移EF 6代码优先中的Alter存储过程-如何将null作为参数的默认值传递

来自分类Dev

EF6代码优先-使用不匹配的外键配置一对一关系

来自分类Dev

EF6代码迁移-数据库不同,但相同

来自分类Dev

EF6代码优先更改数据值

来自分类Dev

实体框架6代码优先从数据库上下文在现有的VIEW上执行CREATE TABLE

来自分类Dev

共享数据上下文/注入依赖项Entity Framework 6代码优先

来自分类Dev

使用EF6代码优先的MySQL现有数据库-带有脚手架的控制器创建错误

来自分类Dev

如何以EF6代码优先的方式删除实体之间的关系?

来自分类Dev

EF6代码优先:更新数据库登录失败

来自分类Dev

EF6代码优先模型ForeignKey

来自分类Dev

EF 6.0代码优先:如何将现有数据库与现有域类同步

来自分类Dev

EF代码优先独立数据库多个上下文

来自分类Dev

在 WinForms 中将 Simple Injector 与后台工作器一起使用以使用 EF6 保存到数据库

来自分类Dev

EF6 与 EF 核心单个数据模型还是多个用于与 REST 服务一起使用的“大型”数据库?

Related 相关文章

  1. 1

    EF6代码优先:使用Fluent API声明外键

  2. 2

    如何在EF6代码优先中对数据库上下文使用通用类型

  3. 3

    更改模型时,EF6代码优先删除表(不是整个数据库)

  4. 4

    有界上下文和EF代码优先-如何将它们放在一起?

  5. 5

    EF6代码优先-使用不匹配的外键配置一对一关系

  6. 6

    EF6代码迁移-数据库不同,但相同

  7. 7

    EF6代码优先数据库初始化期间发生InvalidOperationException(必须显式配置此关联的主要末尾)

  8. 8

    MVC /代码优先:如何在同一数据库上下文中添加更多表?

  9. 9

    使用EF6代码优先的MySQL现有数据库-带有脚手架的控制器创建错误

  10. 10

    在“与SQLITEOPENHELPER一起使用预加载的SQLITE数据库”示例中无法解析符号“上下文”

  11. 11

    将现有数据库表添加到EF6代码优先存储库

  12. 12

    应用EF 6代码优先的迁移-找不到上下文类型

  13. 13

    如何为一个模型创建两个导航属性(EF6代码优先)

  14. 14

    如何在飞行中将BLOB数据类型与不同的数据库一起使用?

  15. 15

    带有新数据库的EF6生成“自创建数据库以来,支持<Database>上下文的模型已更改。”

  16. 16

    数据库迁移EF 6代码优先中的Alter存储过程-如何将null作为参数的默认值传递

  17. 17

    EF6代码优先-使用不匹配的外键配置一对一关系

  18. 18

    EF6代码迁移-数据库不同,但相同

  19. 19

    EF6代码优先更改数据值

  20. 20

    实体框架6代码优先从数据库上下文在现有的VIEW上执行CREATE TABLE

  21. 21

    共享数据上下文/注入依赖项Entity Framework 6代码优先

  22. 22

    使用EF6代码优先的MySQL现有数据库-带有脚手架的控制器创建错误

  23. 23

    如何以EF6代码优先的方式删除实体之间的关系?

  24. 24

    EF6代码优先:更新数据库登录失败

  25. 25

    EF6代码优先模型ForeignKey

  26. 26

    EF 6.0代码优先:如何将现有数据库与现有域类同步

  27. 27

    EF代码优先独立数据库多个上下文

  28. 28

    在 WinForms 中将 Simple Injector 与后台工作器一起使用以使用 EF6 保存到数据库

  29. 29

    EF6 与 EF 核心单个数据模型还是多个用于与 REST 服务一起使用的“大型”数据库?

热门标签

归档