需要检索表中医生姓名的详细信息吗?

时间:2016-09-11 09:41:43

标签: c# entity-framework linq lambda repository-pattern

我在我的代码中调用了下面的方法,但是无法形成表达式树,请建议。

m1.FindSingleBy<Doctor_Details>( m1 => m1.Doctor_Name == "a");


public virtual T FindSingleBy<T>(Expression<Func<T , bool>> predicate) where T : class
    {
        if (predicate != null)
        {

            Dolphin_PatientEntities1 contxt = new Dolphin_PatientEntities1();
            using (contxt)
            {
                return contxt.Set<T>().Where(predicate).SingleOrDefault();
            }
        }
        else
        {
            throw new ArgumentNullException("Predicate value must be passed to FindSingleBy<T>.");
        }
    }

3 个答案:

答案 0 :(得分:3)

在实体框架中,DbSet<T>类是您的存储库,DbContext是您的UnitofWork。在Dbset<T>中,您有Add()Find()Remove()Where()等方法。

  

它维护内存中的业务对象列表   在事务期间更改(插入,更新或删除)。一旦   交易完成后,所有这些更新都作为一个大单位发送   一次性将数据保存在数据库中。

了解更多信息,请查看Unit of Work

答案 1 :(得分:1)

我建议您按照下面提到的文章来了解repository and unit of work patterns。如果您在关注后有任何疑问,请随时再次提问。

  

存储库和工作单元模块旨在创建一个   数据访问层和业务逻辑之间的抽象层   应用程序层。实施这些模式有助于隔离   您的应用程序来自数据存储中的更改并且可以方便   自动化单元测试或测试驱动开发(TDD)。

enter image description here

这是文章: Implementing the Repository and Unit of Work Patterns

答案 2 :(得分:0)

我是存储库模式的新手,但是你通常在哪里存储结果,这样你每次都不会访问数据库?实体框架负责这个吗?