[英]DbContext Set with where query using database first approach EF
我有一個使用ADO.NET實體數據模型生成的類的數據庫優先項目。 我所有的類都有相同的布爾值和日期時間字段,確定和日期。 我想創建用於從DbContext檢索T類的通用方法,但由於無法訪問“確定”和“日期”字段,因此我不確定如何在該查詢中使用位置。
注意:我不能更改生成的類,並且我想避免使用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
定義通用屬性的接口:
public interface IDateOk {
DateTime Date { get; set; }
bool Ok { get; set; }
}
這是一個如何將接口添加到生成的類的教程: 獲取實體框架以生成模擬接口
約束您的方法以要求此接口:
public List<SomeModel> LoadFromDatabase<T>(bool ok, DateTime date) where T: IDateOk
現在,您應該能夠在實施中訪問“確定”和“日期”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.