0
に設定されています。ADO.NETエンティティデータモデル生成クラスを持つデータベースの最初のプロジェクトがあります。私のすべてのクラスは、同じブール値と日時フィールド、OkとDateを持ちます。私はDbContextからTのクラスを取得するための汎用メソッドを作成したいが、私はアクセスクエリのどこにOkとDateフィールドにアクセスできないのかわからない。DbContextデータベースを使用したクエリが最初にEF
注:私は生成されたクラスを変更することはできません、と私は使用しないようにしたいでしょうLinq.Dynamic
ADO.Netは
public partial class First
{
public int Id { get; set; }
public string NameFirst { get; set; }
public DateTime Date { get; set; }
public bool Ok { get; set; }
}
public partial class Second
{
public int Id { get; set; }
public string NameSecond { get; set; }
public DateTime Date { get; set; }
public bool Ok { get; set; }
}
はデータ
public List<SomeModel> LoadFromDatabase<T>(bool ok, DateTime date)
{
var dbData = DbContext.Set(typeof(T)).AsNoTracking().Where(x => x.Ok ???);
//remap to some model and return it
...
return someModel;
}
編集1を取得し、生成しました:
public List<SomeModel> LoadFromDatabase<T>(bool ok, DateTime date) where T : IDateOk
{
var dbData = DbContext.Set(typeof(T)).AsNoTracking().Where(x => x.Ok &&);
//remap to some model and return it
...
return someModel;
}
public interface IDateOk {
DateTime Date { get; set; }
bool Ok { get; set; }
}
編集2:ここでは
public interface IDateOk {
DateTime Date { get; set; }
bool Ok { get; set; }
}
はにインターフェイスを追加する方法のチュートリアルです: それは
public List<SomeModel> LoadFromDatabase<T>(bool ok, DateTime date) where T : class IDateOk
私はあなたが編集1でそれらを見ることができると示唆した変更を加えました。残念ながら、dbDataクエリで "Can not resolve symbol Ok"が表示されます。なぜなのかご存知ですか? –
多分、私はこれを考えず、EFがクエリをSQLに変換できないと思いました。この仮説をテストするには、まず、以下を列挙してメモリ内のクエリを実行してみてください: 'var dbData = DbContext.Set(typeof(T))AsNoTracking().ToList()。Where(x => x.Ok);' –
最終的な解決に導いてくれてありがとう –