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 List<SomeModel> LoadFromDatabase<T>(bool ok, DateTime date) where T : class IDateOk
我做了更改,建議您可以在編輯1中看到它們,不幸的是我在dbData查詢中得到「無法解析符號確定」。你知道爲什麼嗎? –
嗯,也許我沒有想到這一點,EF無法將查詢翻譯成SQL。爲了驗證這個假設,請嘗試在內存中通過枚舉運行查詢:var dbData = DbContext.Set(typeof(T))。AsNoTracking()。ToList()。其中(x => x.Ok);' –
非常感謝您的幫助,使我獲得最終解決方案 –