2011-01-05 12 views
3

Ich habe SQL Server Db bereit mit einfachen (nicht viele Nebenbedingungen) Tabellen. Jetzt muss ich DAL und Objektklassen für Tabellen generieren..NET ORM Hilfe benötigt

Wie viel kann .NET ORM (wie NHibernate oder eine andere kostenlose FW, die Sie vorschlagen) dabei helfen? Grundlegend mit mühsamen Aufgaben beim Schreiben von Klassen- und DB-Zugriffsfunktionen. Ich werde besser Zeit damit verbringen, Geschäftslogik für diese Objektklassen zu schreiben.

Wird es später einfach sein, Tabellen hinzuzufügen/zu ändern? Ich habe konzeptionelle Idee über ORMs, aber keine praktische Erfahrung in der Verwendung von.

Antwort

3

Sie könnten Linq to Sql oder Entity Framework verwenden, um Ihre Klassen sowie Datenzugriffsfunktionen automatisch zu generieren.

Sie können Ihre Datenbanktabellen per Drag & Drop von Visual Studio aus in DBML (L2S) oder EDMX (EF) einfügen. Dabei werden Ihre Klassen mit einzeln zugeordneten Einträgen zu Spalten sowie beliebigen Beziehungen erstellt habe definiert.

erstellen Linq to Sql Classes oder ADO.NET Entity Data Model folgendermaßen vor:

  • der rechten Maustaste in Visual Studio auf einem Ihrer Projekte
  • Add => Neues Element
  • Select Linq to Sql Classes oder ADO.NET Entity Data Model
  • Dieser Wille Erstellen Sie eine leere Entwurfsansicht zum Erstellen und Anpassen Ihrer Klassen.
  • Benutzer Server Explorer zum Öffnen einer Verbindung zu Ihrer Datenbank
  • Drag & Drop-Tabellen auf die DBML oder EDMX Canvas und Speichern, wenn Sie fertig sind.

Zum Beispiel:

  • Tabelle User Klasse wird User
  • Wenn Tabelle User Spalte FirstName es wird Eigenschaft FirstName
  • Wenn Tabelle User eine Beziehung mit Tabelle hat Contact wird es generieren IList<Contact> Contacts auf Ihre User Klasse. So können Sie Code wie user.Contacts.Where(c => c.ContactId == 7000) aus dem erzeugten DataContext

schreiben Wenn Sie eine individuellere Art und Weise müssen die Tabellen zur Karte können Sie SQLMetal verwenden, die auch Ihre Klassen generieren, sondern ermöglicht es Ihnen, Änderungen vorzunehmen.Zum Beispiel, Konvertieren int Eigenschaften zu enums.


NHibernate ist auch eine gute Option und hat einen langen Weg zurückgelegt.

+0

Drag & Drop in DBML? Wo ist die Option von DBML in VS.few direkte Schritte zu folgen wäre hilfreich. –

+0

siehe Updates .... – hunter

1

Es gibt viele Tools, die DALs für Sie generieren.

SubSonic ist kein ORM, sondern ein Code-Generierungstool, das eine DAL für Sie generiert.

Es gibt Entity Framework und Linq to SQL (von Microsoft), die auch eine DAL für Sie erzeugen werden, mit einer Designoberfläche in Visual Studio.

Mit all diesen Hinzufügungstabellen müssen die DAL regeneriert werden, damit Änderungen und Anpassungen an diesen Dateien verloren gehen können.

+0

SubSonic ist ein ORM. Es ist möglich, die Datenbank zu ändern, ohne Änderungen auf der Codepage zu verlieren, wenn Sie Dinge wie partielle Klassen korrekt verwenden. –

1

Sowohl Linq2Sql als auch Entity framework können Ihnen dabei in hohem Maße helfen. In Bezug auf Ihre Frage zum Aktualisieren von Tabellen: Ja, es ist ziemlich einfach, Tabellen später zu aktualisieren. Zumindest viel einfacher als wenn Sie alles von Hand geschrieben hätten (wo Sie auch von Hand Änderungen vornehmen müssten).

+0

Gibt es viel Lernkurve oder ich kann einfach anfangen zu verwenden?Wie erzeuge ich Klassen und DAL mit linq2sql (es sieht einfacher aus als EF), gibt es irgendein Werkzeug? –

+1

@Munish Goyal: Ich denke nicht, dass die Lernkurve sehr steil ist. Ja, es gibt ein Werkzeug. Sie ziehen Ihre Tabellen einfach in Visual Studio. Alles, was Sie tun müssen, ist eine Datei "Linq2Sql Datenklassen" zu Ihrem Projekt hinzufügen und beginnen, Tabellen aus "Server Explorer" zu ziehen. einfach so. –

+0

"Linq2Sql Datenklassen" Datei? .cs-Datei oder eine Vorlage? pl ausgearbeitet. wud ist hilfreich –

0

Nhibernate behandelt alle Ihre Datenzugriffslogik. Ich empfehle, dass Sie jeden Fremdschlüssel und Primärschlüssel so definieren, wie Sie können. Es ist auch einfacher, einen expliziten Primärschlüssel anstelle eines zusammengesetzten Primärschlüssels zu haben.

Um die Objektklassen zu generieren, empfehle ich die Verwendung von T4-Vorlagen. Es gibt verschiedene Beispielvorlagen, die online verfügbar sind, und es ist relativ einfach, Ihre eigenen zu schreiben, um genau das zu tun, was Sie wollen.

Es ist auch eine gute Idee, diese Objektklassen als Datencontainer dienen zu lassen und Ihre Geschäftslogik in separaten Klassen zu implementieren, die diese DAL-Klassen verwenden. Dies wird es einfacher machen, sie neu zu generieren, sollten sich die zugrunde liegenden Tabellen ändern.

0

Ich bin ein bisschen spät die Party, aber Cocoon ORM auf Nuget und Github ist gut. Es schreibt den Datenzugriffscode dynamisch. http://guidelinetech.github.io/cocoon-orm/

Feature-Liste unten auf der Website:

  • Automapping von Datenbankfeldern Domain Objekteigenschaften
  • AutoCrud mit automatischer Erstellung auf get Join (wählen)
  • Automapping Domain Objekteigenschaften Parameter für gespeicherte Prozeduren
  • Dynamisch erstellt einfach zu inspizieren parametrisierten SQL, das ist Ausführungsplan und Cache freundlich
  • Verwendet einfache d ata Anmerkungen ähnlich wie die die Entity Framework
  • Regression und Benchmarking-Tools für die wirklich paranoid (wie uns)
  • Tabelle Generation Werkzeuge zur Verwendung in einem Code ersten Umgebung
  • Klasse Generation Werkzeuge für den Einsatz in Code zweite Umgebung
  • Erstellen Sie mühelos nicht-ganzzahlige sequenzielle eindeutige IDs mit dem integrierten Comb-GUID- oder Sequential-UID-Generator.
  • Kompatibel mit SQL Server 2008/2012/20014/+ und Azure SQL (bearbeitbar mit anderer TSQL Datenbanken)
  • Verwenden Sie die Cocoon ORM-Bibliotheken in Ihrem eigenen proprietären Code unter der schwachen Copyleft-Lizenz LGPL (Änderungen Cocoon ORM selbst muss be shared. Bitte lassen Sie uns wissen, damit wir Dinge gemeinsam tun können!)