.Net Core 1.1 Generic Repository按字符串错误查找

时间:2017-11-09 19:37:01

标签: c# .net entity-framework asp.net-core entity-framework-core

所以我一直在尝试实现通用存储库,并且需要能够基于字符串在数据库中查找实体。我遇到的唯一问题是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();
    }
}

有谁知道如何解决这个问题?我需要一种基于字符串值返回单个条目的方法,还要保持存储库的通用性?

任何帮助都将非常感谢!

1 个答案:

答案 0 :(得分:1)

确保您引用版本1.1.0或更高版本的Microsoft.EntityFrameworkCore,因为DbSet没有查找方法before this version

  

在以前的EF版本中,有一种名为Find的便捷方法   available,用于按主要查询实体的上下文   关键值

因此,请注意{I}应基于实体的主键执行。