2012-11-27 183 views
3

我將構建一個應用程序,但我不確定要使用什麼框架。在我工作過的地方,他們使用了編碼製造商的Ntiers,nettiers是免費的,但沒有編碼製造商。我發現了關於實體框架的內容,但我也已經讀過,使用它的方式是使用稱爲「Repository Pattern」的東西,但是使用這種方式存在很多疑問。我沒有一個很大的預算,只有我自己,不能提供一個昂貴的工具,它會自動創建我的類,更新,刪除,創建功能,並留下一些代碼供我實施。所以我不知道要走什麼路,我應該去實體框架(這是唯一一個免費的嗎?),還是有我可以使用的其他東西,也許不是那麼昂貴,但可靠。選擇合適的框架

我真的很感激這一點,因爲我期望,最終這個應用程序將增長和增長,並希望易於維護。 PS:我會去實體框架和存儲庫模式,如果這將是我最好的選擇。

使用C#,Asp.net和MSSQL 2008

+0

NET ORMs - http://stackoverflow.com/questions/1377236/nhibernate-entity-framework-active-records-or-linq2sql/ –

+0

我想指出,我爲CodeSmith Tools工作,我們總是願意與客戶合作定價。只需發送一封電子郵件(codesmithtools.com/contactus)即可。我們有EF模板,但他們不使用存儲庫模式。但是,您可以自定義模板/生成的代碼,以便輕鬆使用通用存儲庫模式。還有一句老話:能爲您節省大量時間的工具非常值得黃金價格。 –

回答

4

實體框架code first and automatic migrations是您可以使用的最簡單的ORM之一。它非常靈活,在Microsoft堆棧中得到很好的支持,並且首先使用代碼,這是開發數據庫的最快方法之一。

首先使用Entity Framework代碼,將數據模型定義爲普通的C#類。這將對應產品表:

public Product { 

    public int Id { get; set; } 
    public string Name { get; set; } 
} 

創建一個數據庫上下文。

public MyDbContext : DbContext { 

    public DbSet<Product> Products { get; set; } 
} 

將連接字符串添加到Web。config,然後在軟件包管理器控制檯中運行命令:

>Enable-Migrations –EnableAutomaticMigrations 
>Update-Database 

而且您現在有一個帶有Products表的功能數據庫。當您對類進行更改時,只需再次運行Update-Database,它就會爲您遷移架構。

要添加新的產品:

using (var db = new MyDbContex() 
{ 
    // get product with id == 1 
    Product product = db.Products.Single(p => p.Id == 1); 
} 

至於存儲庫模式,它只是一個design pattern

using (var db = new MyDbContex() 
{ 
    Product product = new Product() { Id = 1, Name = "Tablet" }; 

    db.Products.Add(product); 

    db.SaveChanges(); 
} 

查詢數據變得容易。有很多不同的variations of the repository pattern,但它實際上是將數據存儲與數據訪問層分開。這使得單元測試更容易,而不必依賴外部數據庫。

編輯您的評論:有一些使用EF和存儲過程的方法。見Does Entity Framework Code First support stored procedures?Using Stored Procedure to Insert Data

+0

非常感謝您的洞察力,一個問題,如果我需要創建一個存儲過程來給我一些特定的數據,那麼在這種情況下它是如何工作的? – user710502

+0

Ibatis.Net很好地調用SP,並將其轉化爲對象。 –

+0

編輯我的答案以添加有關使用存儲過程的信息。 – mfanto

2

另一個列表,你可以選擇是:

數據層:Ibatis.Net或者NHibernate的(主要是我同時使用,NHibernate的凝乳和iBatis .NET for Query必需,例如,調用SP,動態查詢)。

Spring.Net:國際奧委會幫手

Asp.NET MVC:MVC框架。 Benitit是:IBatis,NHibernate和Spring.Net與Java版本非常相似,因此您可以爲它們找到大量文檔。

我可以說的是,具有良好ORM(EF,Nhibernate或Ibatis)的3層是複雜項目的最佳實踐,它更易於維護和合作。如果你的項目非常簡單,LINQ + WebForm可以在幾個小時內幫助你,你完全可以放棄MVC。

2

我認爲這一切都取決於你作爲一個開發者在哪裏以及你想做什麼。就成本而言 - 實體框架在Visual Studio中是免費的。流利的NHibernate與EF非常相似,它也可以通過nu get獲得Oracle,MySql和MSSQL以及超級簡單。

存儲庫模式只是用於獲取集合的模式。

我會說這兩個ORM都有其優點和缺點。