C# · 12月 24, 2021

c# – 使用实体框架获取数据的通用函数

我正在尝试使用Entity Framework创建一个通用函数来从DB获取数据.我传递了一个id作为检索的关键.为此,我编写了以下函数 public T Get<T>(object id) where T : class{ T item = null; using (var context = MyContext()) { item = context.Set<T>().Find(id); } return item;}

该功能正常运行没有任何问题.但是,如果我没有将主键作为过滤器传递,我如何修改此函数来获取数据?

解决方法 您可以传递谓词表达式并使用.FirstOrDefault(). public T Get<T>(Expression<Func<T,bool>> predicate) where T : class{ T item = null; using (var context = MyContext()) { item = context.Set<T>().FirstOrDefault(predicate); } return item;}var customer = context.Get<Customer>(x => x.Name == “Bob”);