2 つのテーブルを渡して最初のテーブルを返すジェネリック クラスを作成しようとしています。2 つの変数は、linq クエリでテーブルを結合するために使用する文字列値です。私が返したいのは IQueryable 値ですが、DataQuery 値を返し続けます。
これは、「メソッド 'System.Reflection.PropertyInfo GetProperty(System.String)' has no supported translation to SQL」というエラーで MVC ビューに失敗して終了します。
以下のコード:
var result = GetTable<Table1, Table2>("Table1id", "Table2id");
public virtual IQueryable<T> GetTable<T, A>(string table1Variable,
string table2Variable)
where T : class
where A : class
{
var table1 = entityDatabaseDC.GetTable<T>();
var table2 = entityDatabaseDC.GetTable<A>();
return from entity in table1.AsQueryable()
join entity2 in table2 on entity.GetType().GetProperty(table1Variable)
equals entity2.GetType().GetProperty(table2Variable)
select entity;
}
単一のテーブルでは問題なく機能します。
var result = repository.GetTable<Table1>();
public virtual IQueryable<T> GetTable<T>() where T : class
{
return entityDatabaseDC.GetTable<T>();
}
私がしようとしていることが可能かどうか疑問に思っています。