簡體   English   中英

簡單的數據訪問層

[英]Simple Data Access Layer

任何人都可以建議一個簡單的數據訪問層(C#.NET)? 不熱衷於使用Microsoft應用程序數據訪問塊,似乎非常臃腫和矯枉過正。 出於各種原因也不想使用LINQ to SQL。 我想以此為基礎並再次出於各種原因創建我們自己的內部ORM。 在過去,我總是已經建立了數據訪問層,因此從未參與構建....

其他個人和組織花了數月或數年時間開發自己的ORM和技術 - 其中許多是您列出的 - 並且許多可以免費使用。 您應該將資源投入到核心應用程序邏輯中,而不是嘗試構建另一個名為ORM的整個野獸。 有足夠的產品來滿足各種應用。

你說你從來沒有參與建立你的DAL。 由於上述原因,嘗試推出自己產生的ORM(就時間和資源而言,不一定是知識)是一個典型的起始錯誤。 如果您認為某些現有產品看起來有點過分,那就等到您進入構建自己的產品的復雜性之后。

但是,如果你想在ORM市場上競爭並且那是你的產品,那么就去吧。 那是我的2美分。

編輯:如果您擔心在項目中綁定某個ORM產品或產品,您可以簡單地隱藏您在界面后面選擇的任何軟件,並根據需要交換其他ORM ...

public interface IBusinessDataOperations {
   // hides any ORM of choice
}

如果有一天你有一些自由周期並且想要建立自己的ORM,即使在嘗試其他產品之后,你也可以將它放在這個界面后面。

你想能夠使用Linq嗎?

您想使用DataSet / DataTables嗎?

您想使用代碼生成器(您自己或其他人的代碼生成器)嗎?

你想使用存儲過程嗎?

老實說,只要你不關心任何類型的高級功能並且你不介意過程令人麻木的麻煩,從頭開始發展你自己的DAL / ORM就不那么難了。 你必須有點瘋狂。 :)

我假設你不想使用像SubSonic,EntityFramework或NHibernate這樣的東西,但如果這是一個不好的假設,請糾正我。

這是一個完整的列表: ORM工具“.Net”

ADO.NET實體框架,微軟的ORM(隨.NET 3.5 SP1發布)
Base One基礎組件庫,免費或商業
BCSEi ORM代碼生成器,免費或商業
適用於.NET的Business Logic Toolkit,開源
Castle ActiveRecord,ActiveRecord for .NET,開源
DataObjects.Net v4.0,開源,商業
DevForce,商業,N-Tier
Developer Express,eXpress持久對象(XPO)
EntitySpaces,商業
Euss,開源
Habanero,免費開源
iBATIS,免費開源
Invist,免費的ORM和代碼生成工具
LLBLGen,開源驅動程序,商業
LightSpeed,免費或商業
Neo,開源
NConstruct,商業
NHibernate,開源
Opf3,免費和商業
ObjectMapper .NET,GPL和商業許可證
OpenAccess,免費或商業TierDeveloper,免費ORM和代碼生成工具
Persistor.NET,免費或商業
快速對象,免費或商業
Sooda,開源; BSD許可證
亞音速,開源
Orasis,免費試用或購買。
Telerik,快遞或購買。
CSLA.NET,免費。
ECO,免費或商業
nhydrate,開源
.netTiers,開源
dapper-dot-net,開源
codesmithtools plinqo,開源

如果您需要避免使用linq,請查看SubSonic版本2.x. 這是一個可以構建的簡單/精簡ORM。 當有像這樣的優秀代碼時,為什么要自己動手。

實際上,我發現的最簡單的SQLHelper文件是早期的2000年代MS數據訪問應用程序塊。 在解壓縮並打開解決方案之后,您會發現您只有一個名為SQLHelper.cs的文件,它基本上只包含了您將使用自行開發的DAL編寫的大量原始ADO。 這是最佳實踐代碼(當時是)並且很容易轉換為.net 2.0框架及以上。 將SQLHelper放入解決方案后,您可以輕松添加自己的數據訪問組件來完成基本的CRUD工作,但您不必擔心打開連接或數據集的低級編碼等等。

我知道你在想什么,為什么要這樣說,因為你說你不喜歡這些街區。 那么這個是我發現的唯一一個沒有使用提供商工廠的人,而你所說的所有額外代碼都是矯枉過正的。 此塊僅適用於SQL Server,因此請記住這一點。 但總的來說,您可能會發現這是您項目中的一個很好的起點。

這是塊本身的下載鏈接

祝你好運,希望這能幫到你。

查看DbExtensions ,您可以使用它來簡化DAL代碼,或者您可以在頂部構建自己的ORM。

對於非常簡單的需求(我的意思是簡單!)我將基於存儲庫模式創建一個DAL,其中sql查詢在存儲庫方法中完成,然后創建並返回簡單的POCO( 普通舊CLR對象 )。

如果需要,您可以調用sprocs或參數化SQL。 然后將數據映射到您的poco(為此只使用標准的SQLDataReader)

但說實話,當查詢變得龐大或復雜或者對象中有很多字段時,最好讓正確的DAL / ORM承擔壓力並專注於您的應用程序。

在你做出決定之前,你有一些問題需要在開始之前回答自己,而不僅僅是你不想要linq或ms數據訪問層那些問題:

  • 您是否希望能夠修改代碼(生成器),或者您是否希望DAL能夠為您提供訪問數據庫的服務?
  • 您想要處理XML配置文件還是更喜歡基於反射的DAL?
  • 您是否希望支持多個數據庫,或者您可以使用特定數據庫?

幾年前我不得不為我工作的公司建立一個DAL,結果是它比我更容易,結果是一個基於反射的ORM,支持許多數據庫,此時SqlServer,Oracle,PostgreSql和SqLite,I可以為您分享代碼,它可以幫助您建立自己的代碼或擴展到您的需求。

如果它可以幫助您構建自己的DAL(如果您有時間),那么您將學習一些Sql以及您可能永遠不會再使用的語言的一些功能。

祝你好運......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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