【问题标题】:need to retrieve the details for doctor name in the table?需要在表中检索医生姓名的详细信息?
【发布时间】:2017-01-18 23:24:22
【问题描述】:

我在我的代码中调用了下面的方法,但是不能形成表达式树,请指教。

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

【问题讨论】:

  • 我对这个问题投了反对票,因为它不包含代码,没有问题并要求为作者编写代码。

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


【解决方案1】:

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

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

更多信息请查看Unit of Work

【讨论】:

  • 谢谢,但是你能详细解释一下工作单元的概念吗?
【解决方案2】:

我建议关注下面提到的文章来学习repository and unit of work patterns。如果您在关注之后有任何问题,请随时再次提问。

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

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

【讨论】:

    【解决方案3】:

    我是存储库模式的新手,但是您通常将结果存储在哪里,这样您就不会每次都访问数据库? Entity Framework 负责这个?

    【讨论】:

      猜你喜欢
      • 2013-11-07
      • 2014-01-07
      • 1970-01-01
      • 2015-05-31
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 2015-02-23
      相关资源
      最近更新 更多