【问题标题】:Create generic abstract class using EF database first approach使用 EF 数据库优先方法创建通用抽象类
【发布时间】:2017-08-14 11:00:47
【问题描述】:

我有一些类似的实体,我想为它们创建一个通用抽象类CRUD 操作,但我不知道如何访问通用类中的实体。例如:

public abstract class HeaderRepository<T>
{
    public HeaderRepository()
    {

    }

    public virtual byte[] Insert(T item)
    {
        using (MyEntities context = new MyEntities())
        {
            context.*****  <-- What I should write to add an object to entity T
        }
    }
}

我希望我明白了。

【问题讨论】:

    标签: c# entity-framework generics c#-4.0 abstract-class


    【解决方案1】:

    您需要设置数据库集。最好在类级别有一个私有变量,在构造函数中设置然后使用它。

    using (MyEntities context = new MyEntities())
        {
            DbSet<T> dbSet = context.Set<T>();
            dbSet.Add(...) //Whatever your operation is. 
        }
    

    【讨论】:

    • 因为我使用ObjectContext 我收到了这个错误:'MyEntities' 不包含'Set' 的定义,并且找不到接受'MyEntities' 类型的第一个参数的扩展方法'Set' (您是否缺少 using 指令或程序集引用?)
    • 对不起,你能解释更多吗?我不知道我应该应用什么更改
    • 尝试将 set 替换为 CreateObjectSet
    • 我写了这个:var query = context.CreateObjectSet&lt;T&gt;(); 但得到了这个错误:类型“T”必须是引用类型才能在泛型类型或方法“ObjectContext.CreateObjectSet”中用作参数“TEntity” ()'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 2012-03-04
    • 1970-01-01
    • 2019-10-23
    相关资源
    最近更新 更多