ich versuche mich an Unit-Tests für EF4.1 Anwendungen. Ich habe eine Motel-First-Anwendung modelliert und möchte nun 'ObjectContext' im Rahmen von Unit-Tests durch einen mock ersetzen.
Hierzu habe ich folgendes erstellt:
public interface IContext { IObjectSet<Material> Materials { get; } IQueryable <Recipe> Recipes { get; } IObjectSet<Element> Elements { get; } : : IObjectSet<TEntity> CreateObjectSet<TEntity> () where TEntity : class, new (); }
dann habe ich meine automatisch erzeuge 'Entities' Klasse mit diesem Interface erweitert:
public partial class XPRDEntities : IContext { .... }
Direkt danach erhalte ich kryptische Fehlermeldungen, die sich aber auf folgenden Fehler im File "XPRD.Designer.cs" zurückführen lassen: (ich zeige die Codestelle)
... /// <summary> /// Keine Dokumentation für Metadaten verfügbar. /// </summary> public ObjectSet<Material> Materials { get { if ((_Materials == null)) { _Materials = base.CreateObjectSet<Material>("Materials"); } return _Materials; } }
Die Fehlermeldung: Property 'Materials' cannot implement Property from interface 'XPRDDB.IContext'. Type should be 'System.Data.Objects.IObjectSet<XPRDDB.Material>'.
Ich glaube, dass es mit T4 lösbar wäre, indem das 'XPRDDB.Designer.cs' File entsprechend geändert würde, aber davon habe ich gar keine Ahnung.
Das tue ich ja auch. Habe aber das Problem, dass bei der Erzeugung der Klassen vom EF-Designer nicht 'IObjectSet' sondern 'ObjectSet' verwendet wird. damit erhalte ich Fehlermeldungen des Compilers und das Projekt kann nicht mehr compiliert werden.