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");

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...