| 

.NET C# Java Javascript Exception

2
Hallo,

ich versuche mich an einer T4 (und bin T4-Ahnungslos) - Vorlage zu automatischen Erzeugung eines testbaren Entity-Framework4 ObjectContext (bzw. eines Mocks hiervon).

Meine Frage lautet nun:

Wie kann ich in einer T4 Vorlage die abgeleiteten Objekte in einem EDMX finden und damit automatisch für alle solche Objekte zum Beispiel die folgende Zeilen erzeugen:
IQueryable<Rezept> Rezepte 
{
get { return _rezepte ?? (_rezepte = _context.Materialien.OfType<Rezept>); }
}
IObjectSet<Rezept> _rezepte;


Hilfe wäre super! Vielleicht hat das ja schon mal jemand gelöst?

Danke!
mph
13.10.2011
mph 187 4
1 Antwort
2
Hallo mph,

auch wenn es prinzipiell möglich sein sollte
...in einer T4 Vorlage die abgeleiteten Objekte in einem EDMX finden und damit automatisch für alle solche Objekte zum Beispiel die folgende Zeilen erzeugen:

glaube ich nicht, dass Dich ein T4 Template, das das leistet sonderlich weiterbringt.
Als Alternative würde ich Dir folgendes Vorgehen vorschlagen:

1. Befasse Dich mit T4. Oleg Sych's Blog ist eine hervorragende Sammlung zu T4 Themen, vom Einstieg bis hin zu sehr fortgeschrittenen Themen. T4 Syntax selbst ist harmlos, das sind nur ein paar fürs Auge ungewohnte Zeichen in einem bestimmten Kontext. Ein paar T4 Beispiel-Templates gebastelt und Du hast die Syntax verinnerlicht. Mit Oleg's Einstiegsposts zur Architektur hast Du das sicher schnell verstanden.
Ein paar hilfreiche Links:

  • Tangible T4 Editor - T4 Syntax highlighting und basicx intellisense im VS Editor (gibts auch als kommerzielle Version, die intellisense besser unterstützt)
  • Oleg's t4toolbox - ein must-have, und sei's nur, um davon zu lernen

2. Versuche, Deine Anforderung selbst umzusetzen. Tauchen dabei Fragen auf, stelle Sie hier. Diese Fragen werden einen engeren Fokus haben und Antworten darauf sind einfacher zu finden und zu geben (im Vergleich zu dieser Frage. IMO)

3. Der ADO.NET Unit Testable Repository Generator, den Du aus der VSGallery for free bekommst, könnte Dein Problem evtl. schon lösen oder zumindest als Vorlage für Dein eigenes Template dienen.

Aus eigener Erfahrung kann ich Dir noch sagen, dass Reflection im Zusammenhang mit T4 (also z.B. um Typinformation einzusammeln, um z.B. Proxies zu generieren) nicht ganz trivial ist, weil VS Dein T4 Template in einem Host ausführt, der in seine eigene AppDomain geladen wird.). Das hat mich damals ein paar Stunden gekostet, musst Du also nicht auch nochmal durchmachen.

Bei weiteren (gerne spezifischeren) Fragen zu T4 bin ich jederzeit bereit, Dir weiterzuhelfen.

Viel Erfolg
Florian
14.10.2011
ffordermaier 4,7k 2 8
1
Vielen Dank für die Antwort Florian. Das habe ich befürchtet, da ich mich schon viele Stunden mit dem Problem herumschlage. Danke für den Hinweis auf Oleg's Blog!
mph
mph 14.10.2011
Bitte gerne. Wie gesagt, bei weiteren Fragen zu T4 helf ich gerne, wenn ich kann.
ffordermaier 14.10.2011

Stelle deine .net-Frage jetzt!