我在我的代码中调用了下面的方法,但是无法形成表达式树,请建议。
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>.");
}
}
答案 0 :(得分:3)
在实体框架中,DbSet<T>
类是您的存储库,DbContext
是您的UnitofWork
。在Dbset<T>
中,您有Add()
,Find()
,Remove()
,Where()
等方法。
它维护内存中的业务对象列表 在事务期间更改(插入,更新或删除)。一旦 交易完成后,所有这些更新都作为一个大单位发送 一次性将数据保存在数据库中。
了解更多信息,请查看Unit of Work
答案 1 :(得分:1)
我建议您按照下面提到的文章来了解repository and unit of work patterns
。如果您在关注后有任何疑问,请随时再次提问。
存储库和工作单元模块旨在创建一个 数据访问层和业务逻辑之间的抽象层 应用程序层。实施这些模式有助于隔离 您的应用程序来自数据存储中的更改并且可以方便 自动化单元测试或测试驱动开发(TDD)。
答案 2 :(得分:0)
我是存储库模式的新手,但是你通常在哪里存储结果,这样你每次都不会访问数据库?实体框架负责这个吗?