[英]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.