所以我一直在尝试实现通用存储库,并且需要能够基于字符串在数据库中查找实体。我遇到的唯一问题是DbSet不包含我期望的Find()
方法。
有没有人知道我如何保持我的存储库通用,同时还试图根据数据库中的字符串值返回实体?这是我的存储库类
public class Repository<T> : IRepository<T> where T : class
{
protected readonly DbContext Context;
protected DbSet<T> DbSet;
public Repository(NLPDbContext context)
{
Context = context;
DbSet = context.Set<T>();
}
public void Add(T entity)
{
Context.Set<T>().Add(entity);
Save();
}
public T Get<TKey>(TKey id)
{
throw new NotImplementedException();
}
public T GetByEmail<TKey>(TKey Email)
{
//No .Find method????
return DbSet.Find(Email);
}
public IQueryable<T> GetAll()
{
return DbSet;
}
public void Update(T entity)
{
Save();
}
private void Save()
{
Context.SaveChanges();
}
}
有谁知道如何解决这个问题?我需要一种基于字符串值返回单个条目的方法,还要保持存储库的通用性?
任何帮助都将非常感谢!
答案 0 :(得分:1)
确保您引用版本1.1.0或更高版本的Microsoft.EntityFrameworkCore
,因为DbSet
没有查找方法before this version。
在以前的EF版本中,有一种名为Find的便捷方法 available,用于按主要查询实体的上下文 关键值
因此,请注意{I}应基于实体的主键执行。