2
フォームのコンストラクタにテーブル名とともにEntity Frameworkコンテキストを渡そうとしていますが、コンテキストからテーブルオブジェクトを取得しようとしました。 BindingSourceのデータソースをこのテーブルのデータに設定する必要があります.DataGridViewのDataSourceはBindingSourceにバインドされています。文字列を使用してコンテキストからテーブルを取得する
テーブルのデータを取得してtableNameのタイプのリストを作成し、dgvにデータを移すのを手伝ってもらえますか?
ありがとうございます。
public MyForm(T context, string tableName)
{
ObjectContext objectContext = ((IObjectContextAdapter)breezeContext).ObjectContext;
var items= objectContext.MetadataWorkspace
.GetItems(System.Data.Entity.Core.Metadata.Edm.DataSpace.CSpace)
.Where(b => b.BuiltInTypeKind == BuiltInTypeKind.EntityType)
.ToList();
var dbSetPropertyType = breezeContext.GetType()
.GetProperties()
.FirstOrDefault(x => x.Name == tablename);// tablename must match with the DbSet property in your context
var dbset = breezeContext.Set(dbSetPropertyType.PropertyType.GenericTypeArguments.FirstOrDefault());
bindingSource.DataSource = dbset;
dgvDataviewer.DataSource = bindingSource;
}
側注:
これについては何が問題になりませんか?不動産を見つけられないのですか?テーブル名がプロパティ名と一致していますか? EFでは、テーブル名が複数のものにデフォルト設定されています。 – Max
テーブルからデータを戻していません。はい、名前が一致する、私は行方不明だが、私はそれを把握することはできません。たぶん答えはGetGetMethodにあり、それをいくつか呼び出す方法は? – cdsln
'table'は' PropertyInfo'でなければならないので、データを取り出す必要があります。 'GetGetMethod'を呼び出すと、' DbSet 'が得られます。これにより、より多くのリフレクションを使って値を引き出すことができます。 –
Max