2017-09-27 1 views
-1

Ich habe eine Methode:Entity Framework und generische Einheit

private static string doGeneric<T>(T DB, string xmlfilename, string headername, string prefix, string xpath) 

ich es so nennen:

var res = doGeneric(new cou(), (string)p, "coudata", "cou", "//Cou/Item"); 
var res = doGeneric(new ttu(), (string)p, "ttuData", "ttu", "//Ttu/Item"); 
. 
. 
. 
var res = doGeneric(new xxu(), (string)p, "xxuData", "xxu", "//xxu/Item"); 

cou(), ttu() und xxu sind EF Entitäten, die von EF Rahmen (DB zuerst).

Im doGeneric Methode, die ich habe:

using (myEFEntity con = new myEFEntity()) 

ich so etwas wie dies tun wollen:

var cnt = con.DB.Count(); 

Wie kann ich das tun?

+0

Haben Sie diesen Code zu schreiben versuchen? Was geschieht? Error? 'con.DB.count()' was ist das übrigens? –

+0

@Chetan Ranpariya Compiler-Fehler, der sagt, DB existiert nicht. Ich habe es auch versucht. Das hat auch nicht funktioniert. DB ist als Teil dieser 'doGeneric (T DB,' – Zuzlx

Antwort

1

Sie können die DbSet für einen bestimmten Typ mit dem DbContext.Set<TEntity> Method erhalten:

Gibt eine DbSet<TEntity> Instanz für den Zugang zu Einrichtungen des angegebenen Typs in dem Kontext und dem zugrunde liegenden Speicher.

In Ihrem Fall sollten Sie in der Lage sein, dynamisch die Zählung Ihres DbSet<T> mithilfe der folgenden innerhalb doGeneric<T> zu erhalten:

using (myEFEntity con = new myEFEntity()) 
{ 
    var cnt = con.Set<T>().Count(); 
}