2016-12-11 1 views
0

Sorry, ich bin neu in Entity Framework ..Entity Framework 7 Erstellen In-Memory-Implementierung von DbSet

ich eine TestDbSet zu erstellt werden soll, die eine In-Memory-Implementierung von DbSet in EF 7.

public class TestDbSet<TEntity> : DbSet<TEntity>, IQueryable, IEnumerable<TEntity>, IDbAsyncEnumerable<TEntity> 
     where TEntity : class 
    { 
     ObservableCollection<TEntity> _data; 
     IQueryable _query; 


    public TestDbSet() 
    { 
     _data = new ObservableCollection<TEntity>(); 
     _query = _data.AsQueryable(); 
    } 

    public override TEntity Add(TEntity item) 
    { 
     _data.Add(item); 
     return item; 
    } 

    public override TEntity Remove(TEntity item) 
    { 
     _data.Remove(item); 
     return item; 
     } 
} 
bietet

Ich erhalte einen Fehler in Add-Methode, die Rückgabetyp muss EntityEntry<T> entsprechen Overriden Dbset-Mitglied sein.

Ich habe versucht, Methodensignatur zu ändern, aber ich bin nicht sicher, wie

public override EntityEntry<T> Add(T item) 
     { 
      _data.Add(item); 
      return item; 
     } 

Artikel als EntityEntry zurückzukehren ich nicht ähnliches Problem finden konnte. Können Sie mir führen, wie wir in EF 7 implementieren .. Ich weiß es 6 in EF arbeiten ..

+0

Was mit dieser Implementierung tun Sie tun möchten? –

+0

Für Unit-Tests .. – RajGan

+0

Ich denke, es ist besser, ein DbSet zu erben, das von List oder Collection erbt, auch Sie werden das Verhalten für generierte Werte als Identität in SqlSever –

Antwort

2

Für die Prüfung ohne echte DB können Sie use Microsoft.EntityFrameworkCore.InMemory Paket

+0

Ja im Speicher funktioniert. Aber ich möchte meine DBSets verspotten und habe auch Bulk-Updates, für die ich Stored Procedure verwende. – RajGan

+0

Sie würden "EntityEntry" von DbContext erhalten. Sie können 'DbSet' nicht ohne DbContext verwenden, da DbSets Teil des Kontexts sind. In Ihrem Code-Snippet werden Sie den Kontext nirgends einbeziehen. Wenn Sie den Kontext nicht als Vorschlag in Kommentaren der Frage verwenden möchten, können Sie besser von List oder Collection übernehmen. – Smit

+0

@Smit: Ich wurde versucht, dieses [Sample] (https://msdn.microsoft.com/en-us/library/dn314431 (v = vs.113) .aspx) in EF 7 zu replizieren und ich konnte nicht übersteuern dbset-Methoden in der TestDbset-Klasse. Lassen Sie mich wissen, wie ich zurückkehrende EntityEntry erreichen kann. – RajGan

Verwandte Themen