c# - EF Core - 映射到共享查找表的最佳方式
问题描述
在我现有的数据库中,我有一个表来存储查找/选择列表值 - 它是多用途的,因此允许我存储可能用于驱动多个组合框等的值 - 我不确定如何在 EF 中对此建模?
表的架构如下:
PKID 整数
值类型 varchar(32)
值键 int
值标题 varchar(64)
显示序列整数
因此,每个 ValueType 都表示一组值。理想情况下,当我在表中显示数据时,我需要从该表中获取值,例如,我将存储一个 PriorityID 值并映射到我的选项列表表中的一组值。对于我可以愉快地使用 .Include 等的东西,我有单独的实体,但是对于这种情况,我看不到如何实现。
有没有办法将记录子集定义为一个单独的实体,所以我可以有优先级/类别等,让它只选择记录子集,或者我将不得不手动创建我的查询并过滤记录我加入这个选项表?
谢谢
编辑:我已经走了 TPH 路线:
public class PickList
{
[Key]
public int PKID { get; set; }
[Column("PLValueType")]
public string ValueType { get; set; }
[Column("PLValueKey")]
public int ValueKey { get; set; }
[Column("PLValueTitle")]
public string ValueTitle { get; set; }
[Column("PLDisplaySequence")]
public int DisplaySequence { get; set; }
}
然后 :
public class Priority : PickList
{
}
和 :
modelBuilder.Entity<PickList>()
.HasDiscriminator<string>("ValueType")
.HasValue<Priority>("Priority");
但是,如何根据 PriorityFlag 将我的 Priority 实体链接到我的 WorkItem 实体?
public class WorkItem
{
[Key]
public int WorkItemID { get; set; }
public string WorkDescription { get; set; }
public DateTime RequiredDateTime { get; set; }
public int PriorityFlag { get; set; }
public int PriorityIndex { get; set; }
public string AssignedTo { get; set; }
public DateTime? CompletionDateTime { get; set; }
}
解决方案
推荐阅读
- r - 在 InsertUI 函数中使用 Popover (shinybs)
- php - openssl_encrypt 和 mcrypt_encrypt (MCRYPT_CAST_128) 的结果相同
- ios - 从位置事件正确地将 iOS 应用程序启动到后台
- php - pdo中的db类,准备和执行不起作用,为什么?
- python - 未捕获的类型错误:无法读取未定义 D3.JS 的属性“权重”
- c# - 是否可以从字符串重建委托?c# .NET Core
- c++ - 如何删除最新添加的书?
- javascript - MongoDB Node.js 脚本实现
- google-sheets - Google 表格:当单元格 B2 不为空时,将数据向下移动一行或在数据上方添加一行
- c# - ASP.NET Core 2.x 默认为不存在路由