2010-08-15 96 views
2

我正在開發一個使用ASP.NET MVC和Entity Framework的中型ASP.NET項目。我公司開發的3層系統通過設置3個Visual Studio項目,並相應地引用它們:我的3層(n層)架構是否有良好的設計?

  • 介紹 - 這是我的MVC項目,幷包含所有的視圖和控制器。我將這個模型文件夾完全從這個項目中刪除,因爲我將它移動到了BO項目中(參見下文)
  • Business Objects(BO) - 該項目包含應用程序的「肉」應用程序的心臟位於。在這裏,定義的對象代表了我試圖在代碼中進行建模的內容(用戶,設施,約會等)。
  • 數據訪問(DA) - 此項目是目前爲止的所有實體框架。

我遇到的「問題」是我在BO中做了很多手動的一對一映射。例如,當調用User.load()時,我從EF加載用戶,然後將EF結果中的一些參數(名字,姓氏,用戶名,活動等)映射到對象上的參數。

我認爲這是好的和壞的。好:它將EF從項目中斷開,所以如果我需要使用另一個數據存儲,我不會僅限於EF。不好:需要多一點時間,因爲我必須設置每個參數,並通過實現我自己的更改跟蹤,在Add(),Update()等上仔細處理它們。

您如何看待這種方法?

回答

0

它從項目

這的確是個好斷開EF。

我做了很多手工一個一對一的映射在BO

我建議你看一看AutoMapper

我覺得這本書ASP.NET MVC在行動從曼寧相當不錯。最近發佈的第二個版本也包含一個關於AutoMapper的小章節。它不在免費的示例章節中,但您可能需要查看源代碼(或購買本書的課程)。

0

如果您使用的是.Net 4.0,那麼您絕對應該考慮創建和使用POCO實體,而不是EntityObject,它不僅會給您持續性無知(您提到過),而且您也不需要任何映射器,因爲您在包括您的數據訪問在內的所有圖層中使用POCO(普通舊CLR對象)。 如果您還沒有與EF &波蘇斯工作,那麼這將是一個良好的開端: http://blogs.msdn.com/b/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx

如果您使用的是.NET 3.5 SP1和第十三一樣正確地提到不能升級到4.0以後,AutoMapper將自動化您映射進程,或者你可以想出你自己的AutoMapper,它只不過是一個簡單的反射代碼。