c# - 地图属性whith where条件
问题描述
我有 3 个实体的一张表:密码、便笺、信用卡。
该表有一个“EntityType”列。例如,对于密码,有值“P”。
我如何进行映射,以便它只需要那些 EntityType = 'P' 的行
public PasswordEntityMap()
{
Table(Constants.EntitiesTable);
Id(x => x.Id).GeneratedBy.Increment();
Map(x => x.Site);
Map(x => x.Login);
Map(x => x.Password);
Map(x => x.EntityType); <------- where EntityType = 'P'
HasMany(x => x.Attachments)
.Cascade.All()
.Table(Constants.EntityAttachmentTable)
.KeyColumn("EntityId");
}
解决方案
您可以为此使用鉴别器值。
public sealed class PasswordEntityMap : ClassMap<PasswordEntity>
{
public PasswordEntityMap()
{
Id(x => x.Id).GeneratedBy.Increment();
Map(x => x.Site);
Map(x => x.Login);
Map(x => x.Password);
Map(x => x.EntityType);
DiscriminateSubClassesOnColumn("EntityType", "P")
.AlwaysSelectWithValue();
}
}
然后,当您对 PasswordEntity 执行 QueryOver 时,只会检索带有“P”的实体。
var onlyPasswordEntities = _session.QueryOver<PasswordEntity>().List();
推荐阅读
- dart - Flutter 方法 [] 在 null 上被调用
- django - 在阿里云 ECS 上部署 Django 应用
- ios - 如何在 iOS Swift 的“图库”中显示可用的 pdf 文档?
- c# - 不匹配任何可用的视图
- javascript - 不包括 .module.less 的 .less 扩展文件的正则表达式
- bash - 退出正在运行的脚本而不退出 shell
- ios - 日期时间格式化程序崩溃
- image-processing - 用于快速/短事件运动检测的传感器解决方案
- javascript - 将按钮“选择文件”文本更改为文件名
- python - numpy数组的numpy缩放特定值