私は、dllファイルを検索して現在のアプリケーションに追加するPluginManagerを使用しています。C# - Dll-PluginとEntity-Framwork
また、Entity Frameworkを使用してオブジェクトとデータベースからテーブルを作成していますが、データベースのオブジェクトをDatabaseContextクラスで宣言する必要があります。
このデータベースのプラグインからいくつかのオブジェクトをどのように保存することができますか?
ありがとうございました!
私はこれを試してみました:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
foreach(PluginDto plugin in BackendContext.Current.PluginManager._plugins) {
foreach(Type obj in plugin.plugin.getPluginDatabaseObjects())
{
Type typ = typeof(EntityTypeConfiguration<>).MakeGenericType(obj);
List<MethodInfo> l = modelBuilder.GetType().GetMethods().ToList<MethodInfo>();
MethodInfo m_Entitiy = modelBuilder.GetType().GetMethod("Entity").MakeGenericMethod(new Type[] { obj });
var configObj = m_Entitiy.Invoke(modelBuilder, null);
MethodInfo m_ToTable = configObj.GetType().GetMethod("ToTable", new Type[] { typeof(String) });
m_ToTable.Invoke(configObj, new object [] { obj.Name });
}
}
}
しかし、この例外を取得:
'System.InvalidOperationException' 種類の未処理の例外がEntityFramework.dll
で発生しました追加情報:モデルがバックアップデータベースが作成されてから 'DatabaseContext'コンテキストが変更されました。コード一次移行を使用してデータベースを更新することを検討してください(http://go.microsoft.com/fwlink/?LinkId=238269)。
[this](http://stackoverflow.com/questions/5308336/how-can-i-create-dbsett-dynamically-inentity-framework)を見ましたか? – bsoulier
@bsoulier私はこれを試しました:そして、このエラーを取得します: "エンティティタイプのフィールドは、現在のコンテキストのモデルの一部ではありません。 – Flo
EFはこのエラーに応じて動的テーブルを実際に行うことはできません。[こちら]をチェックしてください(http://stackoverflow.com/questions/20688922/the-entity-type-type-is-not-part-of-the -model-for-the-current-context) – bsoulier