Frage

OK, also Ich möchte das Schema -Modell immer noch von EF 4.0 verwenden, Aber ich möchte auch die API und Flexibilität von EF 4.1.

In meiner Anwendung habe ich DBContext -Generierung Code aus meinen aktuellen EF 4.0 -Modellen hinzugefügt.

Meine Fragen sind jetzt meine Optionen, um meine DBSet (EF 4.1) -Modelle zu validieren, ohne dass sie ausgelöscht werden?

DataAnnotation scheint es nicht zu kürzen, da jedes Mal, wenn ich mein visuelles Modell aktualisiere, alle meine Modifikationen abschließt.

  • Ich habe von Teilklassen gehört, aber das scheint wirklich unordentlich zu sein.
  • Ich möchte nicht wirklich Bestätigungen auf meinem Controller durchführen.
  • Ich möchte dies skalierbar machen, damit ich meine Klassen einfach von ASP.NET MVC auf WPF usw. übertragen kann.

Gibt es eine Möglichkeit, dies zu tun? Validierungsrepository? Separate Validierungsschicht? Validierung in den Repository -Schichten? Beispiele wären auch geschätzt.

Bitte hilf mir. Vielen Dank :)

War es hilfreich?

Lösung

Mit einem Vorlagengenerator scheint es möglich zu sein, einen der folgenden zu machen:

  1. Erstellen Sie für jede Ihrer Einheiten eine Kumpelklasse und definieren Sie die Kumpelklasse, indem Sie die Konvention in der Vorlage benennen.
  2. Abbildung ein Weg, um die Datenanmerkungen zu generieren, indem sie in einer separaten Quelle oder so gespeichert werden.

Oder verwenden Sie eine separate Ebene. Wenn Sie Repositorys verwenden, können Sie dort die Validierung einbetten. Ich habe mich für eine ORM -Validierungsfabrik entschieden, die Regeln für eine Entität (entweder statisch oder dynamisch) einberufen, und die Fabrik erledigt die Arbeit (da dies mehr nach dem Prinzip der einzigartigen Verantwortung ist).

HTH.

Andere Tipps

In meinem Projekt mische ich sowohl 4,1- als auch 4,0 -Kontexte. Es ist möglich, eine langsame Migration durchzuführen. Es gibt auch eine Entity Framework 4.1 Reverse Engineer -Erweiterung, die zu Visual Studio hinzugefügt werden kann. (Damit Sie 4.1 verwenden können, indem Sie POCO -Objekte + Zuordnungen aus Ihrer vorhandenen Datenbank generieren).

Ich würde nicht empfehlen, einen DBContext zu erstellen, der EDMX -generierte Modelle aus 4.0 enthüllt. Sie verlieren auch die Vorteile des Erbens von ObjectContext/dbContext, den Erben von Eigenschaften (Zeilenversioning, ECT) und der Steuerung des PoCO -Objekts (nicht Code generiert, sodass Sie sich keine Sorgen um Partials + MetadaType -Attribut wie in 4.0 machen müssen.

Ihre Frage im Zusammenhang mit der Validierung von Schema mit EF4.0:

Damit sind Datenanmerkungen bei der Aktualisierung Ihres Modells nicht vollständig ausgelöscht. Sie müssen das Metadatyp -Attribut verwenden.

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeTtribute.aspx

Das hat ein Beispiel

Ich weiß nicht, warum MS Programmierer so schlechte Praktiken lehrt. Insbesondere die Verwendung von Datenanmerkungen zur Zuordnung in EF 4.1 war eine wirklich dumme Entwurfsentscheidung (z. B. verwendete LINQ-to-SQL separate Attribute, um eine klare Trennung zwischen Zuordnung und Validierung zu erreichen).

Datenanmerkungen werden verwendet, um Daten von Benutzereingaben zu validieren, und die Benutzereingabe ist Ansicht / Controller -verwandte Dinge, bei denen jede Ansicht unterschiedliche Validierungsregeln benötigen kann

In den einfachsten Fällen, in denen Ansicht und Entität 1: 1 sind für Sie basierend auf Ihrem Entitätsmodell.

Dynamische Daten von ASP.NET zeigen auch, wie Sie Datenanmerkungen für generierte Entitäten anwenden können Buddy -Klassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top