OrmLite是否支持指定非主键字段作为外键关联以适配AutoQuery的IJoin接口
AutoQuery 非主键字段关联配置方案
两种实现方式可以满足需求:
- 方式1:使用
[JoinOn]特性显式指定关联字段
自定义继承IJoin<Employee,Department>的接口,在接口上添加特性指定关联列即可,示例代码如下:
该方式为官方原生支持,配置后AutoQuery生成的关联SQL和你手动写// 自定义关联接口,指定关联字段 [JoinOn(nameof(Employee.DepartmentId), nameof(Department.DepNo))] public interface IEmployeeJoinDepartment : IJoin<Employee, Department> { } // AutoQuery 查询DTO继承自定义关联接口 public class QueryEmployeeWithDepartment : QueryDb<Employee>, IEmployeeJoinDepartment { // 可直接添加其他查询过滤字段 }q.Join<Department>((e, d) => e.DepartmentId == d.DepNo)效果完全一致,无需修改原有表结构。 - 方式2:全局配置自定义关联规则
如果需要批量处理多个同类非主键关联场景,可以在OrmLite初始化时全局注册关联映射:
全局配置后直接使用原生OrmLiteConfig.RegisterJoin<Employee, Department>( (e, d) => e.DepartmentId == d.DepNo );IJoin<Employee,Department>接口即可自动走自定义关联逻辑。
注意:如果有多个关联条件,可叠加多个
[JoinOn]特性,特性顺序和关联条件顺序保持一致即可。
内容的提问来源于stack exchange,提问作者specimen
相关产品推荐
相关产品推荐

