c# - LLBLGen 通过非主键的字段加载不同的项目
问题描述
我一直在尝试通过表中不是主键的字段从 LLBLGen 加载单个项目。
我只能弄清楚如何对 FetchEntity 的主键进行归档。
要过滤非主键,我必须获取集合并使用 linq 获取第一个。感觉有点臭,不知道有没有更好的方法?
public BinLocationEntity GetDefaultBinLocation(string firstName, string lastName)
{
var persons = new EntityCollection<PersonEntity>();
var filter = new RelationPredicateBucket();
filter.PredicateExpression.Add(PersonFields.FirstName == firstName);
filter.PredicateExpression.Add(PersonFields.LastName== lastName);
using (var adapter = this.DataAccessAdapter)
{
adapter.FetchEntityCollection(persons , filter);
}
return persons .First();
}
我知道演示代码在现实世界中会很糟糕,它只是作为示例。
解决方案
您还可以通过唯一约束获取:
使用不是主键且不是唯一约束的字段(直接)获取单个实体没有多大意义。生成的代码无法知道您的查询在逻辑上应该导致返回单个实体。
在这些情况下使用 Linq .First() 是完全合适的,根本不是代码/设计的味道。
推荐阅读
- r - 加载 sqldf 和 SQLite 包时出现问题
- java - Java8 Stream .orElseThrow 未报告的异常错误
- node.js - 当单个承诺解决或拒绝时,我如何让我的程序继续运行?
- django - 为什么无法访问django admin,服务器立即退出
- python - 通过迭代来更改 pandas.dataframe 或 pandas.series 对象的索引
- powershell - Win-PS2EXE - 尊重生成的可执行文件的位置
- java - Android:我可以在前台和后台之间移动服务吗?
- hardware - 快速获取 EELS
- python - 在 Matplotlib 中绘制连通散点图
- c++ - make: 无法找到包含的用户定义的头文件?