2012-01-08 130 views
2

我有一些關於如何在企業應用程序中使用實體框架的問題。如何在企業應用程序中使用實體框架

首先,我使用ADO.NET很多年了,我使用對象來反映我從數據庫提供者獲得的數據。每當我想要改變某些東西或將某些東西插入到數據庫中。

我只是調用Save()方法並完成工作。每個對象都有一個DatabaseManager,用於管理對DataAccess層的查詢。 例如

public class Article{ 
    public int ID{get;set;} 
    public string Title{get;set;} 
    ..... 
    public bool Save(){ 
     if(this.ID == -1){ 
      return new ArticleDatabaseManager().InsertArticle(this); 
     }else{ 
      return new ArticleDatabaseManager().UpdateArticle(this); 
     } 
    } 
} 
public ArticleDatabaseManager : DatabaseManager 
{ 
    ...ADO.NET code 
} 

我不知道我是否必須使用同一architectur或更改所有我使用這個對象在我的應用程序的方式。

我想如果我創建像上面我可以做這樣的事情:

public class Article{ 
    public int ID{get;set;} 
    public string Title{get;set;} 
    ..... 
    public bool Save(){ 
     if(this.ID == -1){ 
      return new ArticleDatabaseManager().InsertArticle(this); 
     }else{ 
      return new ArticleDatabaseManager().UpdateArticle(this); 
     } 
    } 
} 

在每個的DatabaseManager實現了一些鏈接的實體甚至EntitySQL做像老的DatabaseManager做相同的工作。 用來自實體對象的值填充業務模型。 然後,我可以像以前一樣與業務合作,只要任何時候我想通過EntityFramework與數據庫進行通信來做一些更改。

Sould我執行類似上面的東西?

我可以繼承以前的業務對象到實體對象嗎? EX: 公共類文章:ArticleEntity {// 一些屬性進行驗證等 }

高度重視和我使用完全不同的東西? 我只是不知道:/

我沒有與其他ORM的經驗。我的手寫了「ORM」系統。

非常感謝你。 我很抱歉我缺乏英語,我知道我在單個問題中詢問太多...... 但是,從一種技術轉移到另一種像我這樣的恐龍就像我改變國家:/

+1

你應該只在每篇文章中提出一個問題。將「這是數據庫...」部分移到另一個問題。 – 2012-01-08 19:16:55

+0

我很抱歉,但我認爲這個問題來自實體框架導航。我刪除它。 :) – Sanosay 2012-01-08 19:22:55

回答

5

你是否至少嘗試使用EF教程?如果不是這樣的話,是時候這樣做了,因爲我們無法在單一答案中解釋有關EF的所有內容(即使是多重答案 - 這也不是用來取代教程和學習資料的目的)。這應該給你關於你所有與你的數據庫管理器相關的東西的明確答案。

一般而言,您所做的事情直到知道與活動記錄模式非常接近。如果你的對象也有用於從數據庫檢索對象的靜態方法,它就是活動記錄模式。使用EF時,通常不使用此模式,並且不需要任何數據庫管理器。 EF圍繞稱爲上下文的類構建,並且此上下文作爲您正在使用的所有實體的數據庫管理器。可以向實體添加保存和檢索方法,但因爲它打破了關注點的分離,並且它使得您的實體嚴重依賴於EF和持久性(趨勢是使它們完全獨立= POCO),所以通常不會使用它。

不要從實體派生任何自定義類。EF將無法使用您的派生類型。使用在EF中映射的實體作爲您的類,並將所有自定義屬性和方法直接添加到此類(如果您不想使用代碼生成器,您甚至可以從頭開始創建該類)。在生成實體的情況下,您可以在部分類中添加自定義代碼。如果你不使用EF實體作爲你的對象,你將不得不手動處理從一個到另一個的轉換(或使用像AutoMapper這樣的工具)。

EF無法使用XML列 - 它會將其作爲字符串處理。特別是如果您打算將這些數據用於某些排序或過濾,並且如果它們具有固定結構,則應將它們建模爲單獨的表/實體。如果它實際上只是結構化內容(具有動態結構),則可以將其用作XML字符串。

+0

是的,我已閱讀有關該框架的EF教程和書籍。 但我有很多困惑。這就是爲什麼我在這裏問。 儘管事實上你起初很諷刺,但你給了我一個非常好的答案。 謝謝你:) – Sanosay 2012-01-08 19:42:21

+0

http://code.msdn.microsoft.com/ASPNET-MVC-Application-b01a9fe8/sourcecode?fileId=25232&pathId=1337828505 這是EntityFramework的「正確」使用,因爲我看到它使用DAL。 謝謝 – Sanosay 2012-01-09 20:37:10

相關問題