![](/img/trans.png)
[英]Repository Pattern using Entity Framework, code first and CRUD operations
[英]Error on implementing generic Repository for CRUD operations using Entity Framework
我有一个问题,我想从我的通用类中获取表:
public virtual TEntity GetById(int id)
{
return _db.Set<TEntity>().FirstOrDefault(c => ((IEntity)c).Code == id);
}
但是Linq
无法IEntity
public abstract class BaseRepository<TEntity, M> : IRepository<TEntity> where TEntity : class where M : new()
如果用TEntity : IEntity
替换TEntity : class
我得到这个错误:
类型“ TEntity”必须是引用类型,才能在通用类型或方法“ System.Data.Entity.DbContext.Set()”中用作参数“ TEntity”
您需要指定两个通用约束,用于指定type参数的现有( class
)必须是引用类型,以及用于指定TEntity
必须实现您的IEntity
接口的接口约束:
^^here^^
public abstract class BaseRepository<TEntity, M> : IRepository<TEntity> where TEntity : class, IEntity where M : new()
之后,您应该可以执行以下操作:
public virtual TEntity GetById(int id)
{
return _db.Set<TEntity>().FirstOrDefault(c => c.Code == id);
}
但是无论如何,我想建议您是否要创建通用存储库,您的GetById
方法应该“更灵活”,例如,您可以执行以下操作:
public virtual TEntity Find(params object[] keyValues)
{
return _db.Set<TEntity>().Find(keyValues);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.