gpt4 book ai didi

c# - 通过数据访问层从数据库中获取数据的聪明方法?

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:04 24 4
gpt4 key购买 nike

我有一个包含许多不同数据集的数据库。我想根据许多不同的参数轻松搜索不同的数据集,例如我目前有:

public List<Dataset> GetAllDatasetsByMethod(Method method)

使用此查询:

var datasets = from b in db.Method where b.Id == method.Id select b.Dataset;

然后我有另一个看起来像这样的方法:

public List<Dataset> GetAllDatasetsByTargetMaterial(TargetMaterial material)

然后像这样查询:

var datasets = from b in db.Dataset
where b.TargetMaterial.Name.ToLower() == material.Name.ToLower()
select b;

我得到了很多这样的方法(比如 10-15)比较以太币的唯一 ID 或名称。我需要做更多,但我开始觉得我在重复自己,据我所知DRY .那么有没有更聪明的方法来做到这一点?

最佳答案

创建一个包含查询参数的所有不同变体的类,例如

public class MyTypeQueryParameters
{
public int? Id {get; set;}
public string MaterialName {get; set;}
}

然后您可以像内部 API 一样设计您的数据访问层,并使用如下方法:

public List<DataSet> GetDataSets(MyTypeQueryParameters parameters) {
var query = db.DataSet.AsQueryable;
if (parameters.Id != null)
{
query = query.Where(x => x.Id == parameters.Id.Value);
}

if (!string.IsNullOrWhitespace(MaterialName))
{
query = query.Where(x => x.TargetMaterial.Name == parameters.MaterialName);
}

return query.ToList();
}

有一些方法可以稍微清理方法的逻辑,但这就是我开始的方式,所以您最终不会得到大量基于查询过滤器的不同方法。

关于c# - 通过数据访问层从数据库中获取数据的聪明方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33173696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com