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