C# 首先使用实体框架4代码在DbContext.DbSet中插入InsertOnSubmit等效项

C# 首先使用实体框架4代码在DbContext.DbSet中插入InsertOnSubmit等效项,c#,entity-framework-4,ef-code-first,C#,Entity Framework 4,Ef Code First,我使用的是实体框架代码优先的方法,我正在构建一个提供数据访问的通用存储库类。在这个类中,我需要一个Add(T entity)方法。但是,作为DbSet类的一部分,没有InsertOnSubmit方法,如果我尝试使用Add方法,我会得到一个编译时错误: The type 'TEntity' must be a reference type in order to use it as parameter 'TEntity' in the generic type or method 'System.

我使用的是实体框架代码优先的方法,我正在构建一个提供数据访问的通用存储库类。在这个类中,我需要一个
Add(T entity)
方法。但是,作为
DbSet
类的一部分,没有
InsertOnSubmit
方法,如果我尝试使用
Add
方法,我会得到一个编译时错误:

The type 'TEntity' must be a reference type in order to use it as parameter 'TEntity' in the generic type or method 'System.Data.Entity.DbContext.Set<TEntity>()'
类型“tenty”必须是引用类型,才能将其用作泛型类型或方法“System.Data.Entity.DbContext.Set()”中的参数“tenty”
方法如下:

public TEntity Add(TEntity entity)
{
     return _database.Set<TEntity>().Add(entity);
}
public tenty Add(tenty实体)
{
返回_database.Set().Add(实体);
}
有人知道怎么避开这件事吗


谢谢

我刚刚发布了这个问题,但我找到了解决问题的方法-使用Set(Type t)方法,而不是像这样的通用版本:

public TEntity Add(TEntity entity)
{
   return (TEntity)_database.Set(typeof(TEntity)).Add(entity);
}

一点intellisense检查会有很大帮助!希望这有助于某人…

为您的存储库类添加通用约束:

public class Repository<TEntity> where TEntity : class
公共类存储库,其中tenty:class

对于个人用途,我可以问一下应用程序中的“\u数据库”是什么吗?我正试着做一个像你这样的方法,但它却抱怨集合方法。。提前谢谢你!yeh man,_数据库字段的类型为DbContext,可以在实体框架中找到。看看ScotGu关于使用EntityFramework4CodeFirst方法的博客,很简单:谢谢。我读了一本书。。我有一个额外的问题:P.Set方法,它的代码是什么?我在文章中做了一个很快的分析,没有发现这种方法。这是我完成项目所需的代码的最后一部分。如果您将.Set方法代码发送给我,我们非常欢迎您收到我的邮件:D