目的: エンティティ typeof(UserAccount) = "UserAccounts" の dbset 名を取得する必要があります。しかし、実行時にはループに共通の型が必要なため、「UserAccount」の例がわかりません。typeofの「名前」だけ?
いくつかのエンティティで DbContext を作成しました。私はしばらくの間グーグルで調べてきましたが、タイプ変換のために機能していないようです?
この説明の最後にあるメソッドGetDbSetNameを参照してください。
私はこの EF についてはかなり新しいので、以下で説明するように私の問題を解決してください ;-)
public class MyEntities : DbContext
{
public DbSet<UserAccount> UserAccounts { get; set;}
public DbSet<UserRole> UserRoles { get; set; }
public DbSet<UserAccountRole> UserAccountRoles { get; set; }
}
出力を制御する Type のリストを定義します。
public static List<Type> ModelListSorted()
{
List<Type> modelListSorted = new List<Type>();
modelListSorted.Add(typeof(UserRole));
modelListSorted.Add(typeof(UserAccountRole));
modelListSorted.Add(typeof(UserAccount));
return modelListSorted;
}
問題はタイプを使用して以下にあります-「UserAccount」を使用すると機能し、「UserAccounts」を取得します。しかし、一連のタイプのループにいるため、実行時に「UserAccount」がありません。私は e を与える Type リストしか持っていません
public static loopList()
{
List<Type> modelListSorted = ModelListSorted();
foreach (Type currentType in modelListSorted)
{
string s = DataHelper.GetDbSetName(currentType, db);
}
}
これが私に課題を与える方法です;-) コンパイルしないことを意味します。アセンブリがないと言っていますか?私はそれがかなり擬似的であることを知っていますが、これはスムーズに行うことができますか?
public static string GetDbSetName(Type parmType, MyEntities db)
{
string dbsetname = (db as IObjectContextAdapter).ObjectContext.CreateObjectSet<parmType>().EntitySet.Name;
return dbsetname;
}