| 

.NET C# Java Javascript Exception

0
Hallo,

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.

Kann mir da jemand helfen?
mph
30.09.2011
mph 227 1 6
1 Antwort
1
Objectset implementiert bereit ein Interface IObjectset<TEntity>. Kannst Du das in Deinen Tests nicht verwenden?
30.09.2011
sgf 426 3
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.
mph 04.10.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH