將實體框架中生成的對象用作業務對象是不好的做法嗎?圍繞實體框架對象編寫一個二次包裝,然後再通過層之間的更好?.NET實體框架
例如,寫我自己的POCO Person,它接受我生成的實體框架對象EFPerson中的一個來初始化POCO Person對象?
將實體框架中生成的對象用作業務對象是不好的做法嗎?圍繞實體框架對象編寫一個二次包裝,然後再通過層之間的更好?.NET實體框架
例如,寫我自己的POCO Person,它接受我生成的實體框架對象EFPerson中的一個來初始化POCO Person對象?
我不明白爲什麼會這樣不好的做法。根據您打算如何使用EF對象,這可能會很尷尬。
我有部分類在EF對象中實現BIZ邏輯,使用接口提供抽象級別。
例如。
public partial class Client : IClient
{
void DoSomething();
}
// then an EF generated object ...
public partial class Client
{
// ...
}
我唯一的問題是序列化對象。在我的情況下,使用WCF序列化成JSON。沒有創建一箇中間DTO作爲一個離散的類/對象或匿名類型是不可能的。
如果你有興趣系列化,看看這裏我的另一個問題:Serialize Entity Framework objects into JSON
雖然有些人往往在實體框架類包裝到他們的業務對象,我通常會建議不要那樣做。
我知道這改善了業務邏輯和數據訪問的分離,但我認爲這通常不值得重複所有實體類型的開銷。
OR映射器的目的是什麼?無需手動將對象映射到數據庫的複雜數據訪問層就能堅持業務對象。如果你包裝了實體框架類,你只能使用獲得的一半便利。
最後,數據訪問和業務邏輯之間的耦合與部分類不緊密。不久之前,我在幾個小時內將一個涉及大約30個實體的項目從實體框架改爲LINQ to SQL,沒有出現任何重大問題。
那些市長......總是造成問題...... – 2009-05-06 16:07:29
:D去修復...;) – 2009-05-07 10:09:37
如果EF對象有序列化問題,是不是最好把它們包裝在POCO中?因爲你可能在將來某個時候想通過WCF公開你的商業邏輯。 – Nate 2009-05-06 16:08:34