簡體   English   中英

dbContext設置使用數據庫優先方法EF的where查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM