Kann jemand einen einfachen Data Access Layer (C# .NET) vorschlagen? Nicht scharf auf die Verwendung der Microsoft Application Data Access Block, scheint sehr aufgeblasen und Overkill. Auch wollen nicht LINQ to SQL aus verschiedenen Gründen zu verwenden. Ich möchte darauf aufbauen und unser eigenes internes ORM erstellen, wiederum aus verschiedenen Gründen. In der Vergangenheit habe ich immer die Data Access Layer bereits gebaut, so war nie in Gebäude beteiligt ....
Antworten
Zu viele Anzeigen?Andere Einzelpersonen und Organisationen haben Monate oder Jahre damit verbracht, ihre eigenen ORMs und Technologien zu entwickeln - viele davon haben Sie aufgelistet - und viele sind kostenlos zu verwenden. Sie sollten Ihre Ressourcen auf Ihre Kernanwendungslogik verwenden, anstatt zu versuchen, ein weiteres ganzes Biest namens ORM zu entwickeln. Es gibt genügend Angebote, um alle Arten von Anwendungen zu bedienen.
Sie sagten, Sie waren nie an der Entwicklung Ihrer DAL beteiligt. Es ist ein klassischer Startfehler zu versuchen, Ihre eigene resultierende ORM zu rollen (in Bezug auf Zeit und Ressourcen, nicht unbedingt Wissen), aus den oben genannten Gründen. Wenn Sie denken, dass einige der bestehenden Angebote zu viel des Guten sind, dann warten Sie nur, bis Sie sich in die Feinheiten der Erstellung Ihres eigenen ORMs einarbeiten.
Wenn Sie jedoch auf dem ORM-Markt konkurrieren wollen und dies Ihr Produkt ist, dann nur zu. Das sind meine 2 Cents.
Editar: Wenn Sie Bedenken haben, in Ihrem Projekt an ein bestimmtes ORM-Produkt oder -Angebot gebunden zu sein, können Sie die von Ihnen gewählte Software einfach hinter einer Schnittstelle verstecken und bei Bedarf andere ORMs einbinden...
public interface IBusinessDataOperations {
// hides any ORM of choice
}
Und wenn Sie eines Tages ein paar freie Zyklen haben und Ihr eigenes ORM bauen wollen, nachdem Sie andere Produkte ausprobiert haben, können Sie es auch einfach hinter dieser Schnittstelle einbauen.
Möchten Sie Linq verwenden können?
Möchten Sie DataSets / DataTables verwenden?
Möchten Sie einen Codegenerator (Ihren eigenen oder den eines anderen Anbieters) verwenden?
Möchten Sie gespeicherte Prozeduren verwenden?
Ehrlich gesagt, ist es gar nicht so schwer, sein eigenes DAL/ORM von Grund auf zu entwickeln, solange man sich nicht für fortgeschrittene Funktionen interessiert und sich nicht an der stumpfsinnigen Langeweile des Prozesses stört. Man muss allerdings ein bisschen verrückt sein :)
Ich nehme an, dass Sie nichts wie SubSonic, EntityFramework oder NHibernate verwenden möchten, aber korrigieren Sie mich, wenn das eine falsche Annahme ist.
Hier finden Sie eine vollständige Liste: ORM-Werkzeuge ".Net"
ADO.NET Entity Framework, das ORM von Microsoft (veröffentlicht mit .NET 3.5 SP1)
Base One Foundation Component Library, frei oder kommerziell
BCSEi ORM Code Generator, kostenlos oder kommerziell
Business Logic Toolkit für .NET, Open Source
Castle ActiveRecord, ActiveRecord für .NET, Open Source
DataObjects.Net v4.0, quelloffen, kommerziell
DevForce, kommerziell, N-Tier
Developer Express, eXpress Persistent Objects (XPO)
EntitySpaces, kommerziell
Euss, offene Quelle
Habanero, Freie offene Quelle
iBATIS, Freie offene Quelle
Invist, kostenloses ORM- und Code-Generierungswerkzeug
LLBLGen, Open-Source-Treiber, kommerziell
LightSpeed, kostenlos oder kommerziell
Neo, offene Quelle
NConstruct, gewerblich
NHibernate, quelloffen
Opf3, kostenlos und kommerziell
ObjectMapper .NET, GPL und kommerzielle Lizenz
OpenAccess, kostenlos oder kommerziell TierDeveloper, freies ORM- und Code-Generierungswerkzeug
Persistor.NET, kostenlos oder kommerziell
Quick Objects, kostenlos oder kommerziell
Sooda, Open Source; BSD-Lizenz
Subsonic, offene Quelle
Orasis, kostenlos testen oder kaufen.
Telerik, express oder kaufen.
CSLA.NET, kostenlos.
ECO, kostenlos oder kommerziell
nhydrate, offene Quelle
.netTiers, quelloffen
dapper-dot-net, offene Quelle
codesmithtools plinqo, offene Quelle
Die einfachste SQLHelper-Datei, die ich gefunden habe, war der MS Data Access Application Block aus der frühen 2000-Ära. Nach dem Entpacken und Öffnen der Lösung finden Sie, dass Sie nur eine Datei namens SQLHelper.cs, die im Grunde nur wickelt viel von der rohen ADO, die Sie mit einem hausgemachten DAL schreiben würde haben. Es handelt sich um Best-Practice-Code (zum damaligen Zeitpunkt), der sich leicht in das .net 2.0-Framework und höher konvertieren lässt. Nachdem Sie SQLHelper in Ihrer Lösung platziert haben, können Sie einfach Ihre eigenen Datenzugriffskomponenten hinzufügen, um Ihre grundlegende CRUD-Arbeit zu erledigen, aber Sie müssen sich nicht um die Low-Level-Codierung des Öffnens einer Verbindung oder eines Datensatzes oder was auch immer kümmern.
Ich weiß, was du denkst, warum schlägst du das vor, weil du gesagt hast, dass du die Blöcke nicht magst. Nun, dieser ist der einzige, den ich gefunden habe, der keine Provider-Fabrik und all den zusätzlichen Code verwendet, den Sie sagen, ist Overkill. Dieser Block ist nur für SQL Server, also bedenken Sie das. Aber im Großen und Ganzen könnten Sie feststellen, dass dies ein guter Ausgangspunkt für Ihr Projekt ist.
Hier ist ein Download-Link zum Block selbst.
Viel Glück, und ich hoffe, das hilft.
- See previous answers
- Weitere Antworten anzeigen