簡體   English   中英

實體框架中的存儲庫模式和查找功能

[英]Repository Pattern and Find Functionality in Entity Framework

將對象持久化的方式與業務邏輯分開是一種很好的模式。 如果我將對象在數據庫中的持久化方式暴露給業務邏輯,那么當我改變這些對象的持久化方式時,我將不得不改變業務邏輯,使它們緊密耦合。

話雖如此,假設業務邏輯使用 Foo 作為對象,並假設 DAL(使用 EF)使用 FooDbModel 作為對象進行持久化。 使用存儲庫模式構建 CRUD 操作非常簡單:獲取Foo對象,構建FooDbModel ,做任何需要的事情,然后構建Foo並返回它。

但是,當Find功能涉及更多時。 理想情況下,我想做類似的事情:

Repository.Find(f => f.Name == "something");

其中fFoo類型(不是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM