[英]Repository Pattern and Find Functionality in Entity Framework
将对象持久化的方式与业务逻辑分开是一种很好的模式。 如果我将对象在数据库中的持久化方式暴露给业务逻辑,那么当我改变这些对象的持久化方式时,我将不得不改变业务逻辑,使它们紧密耦合。
话虽如此,假设业务逻辑使用 Foo 作为对象,并假设 DAL(使用 EF)使用 FooDbModel 作为对象进行持久化。 使用存储库模式构建 CRUD 操作非常简单:获取Foo
对象,构建FooDbModel
,做任何需要的事情,然后构建Foo
并返回它。
但是,当Find
功能涉及更多时。 理想情况下,我想做类似的事情:
Repository.Find(f => f.Name == "something");
其中f
是Foo
类型(不是FooDbModel
)。 EF可以吗? 我不想传递f
where if 是FooDbModel
类型,因为这FooDbModel
数据持久性暴露给 BL。
有什么技巧可以做到这一点吗?
@IvanStoev 解决了这个问题。
基本上,我需要做一个选择,然后一个地方。
引用他的话:
如果您在 IQueryable 上执行此操作,则不会。 不确定您的方法的结构究竟如何,但我看到的 Find 方法的实现类似于 context.Set().Select(m => new Foo { ... }).Where(f => ...)这应该转换为 SQL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.