Sql 如何基于键将实体框架映射到子-父查找表
我有一个数据库,它有一个父子查找我的下拉列表值,有一个域表,它表示下拉列表的类型,即标题、婚姻状况、国家,还有一个查找与这些下拉列表相关的值,我们称之为域值 乙二醇 标题域表 MR域值表 MRS域值表 未命中域值表 医生域值表 婚姻状况域表 单域值表 已婚域值表 离异域值表 我发现自己编写了丑陋的代码,暴露了下面类似的底层实现Sql 如何基于键将实体框架映射到子-父查找表,sql,entity-framework,parent-child,Sql,Entity Framework,Parent Child,我有一个数据库,它有一个父子查找我的下拉列表值,有一个域表,它表示下拉列表的类型,即标题、婚姻状况、国家,还有一个查找与这些下拉列表相关的值,我们称之为域值 乙二醇 标题域表 MR域值表 MRS域值表 未命中域值表 医生域值表 婚姻状况域表 单域值表 已婚域值表 离异域值表 我发现自己编写了丑陋的代码,暴露了下面类似的底层实现 using (var db = new OrderContext()) { ... var maritalStatusId = (
using (var db = new OrderContext())
{
...
var maritalStatusId = (
from sp in db.DomainValues
where sp.ShortCode == "MARRIED"
where sp.Domain.ShortCode == "MARITAL_STATUS"
select sp.Id
).FirstOrDefault();
if maritalStatusId != 0)
{
orderStore.maritalStatus = maritalStatusId;
}
...
db.OrderStores.Add(orderStore);
db.SaveChanges();
}
是否可以编写与此类似的代码
using (var db = new OrderContext())
{
...
orderStore.maritalStatus = new MaritalStatus { ShortCode = "MARRIED" }
...
db.OrderStores.Add(orderStore);
db.SaveChanges();
}
,其中导航属性处理插入
如果是,我该如何设置
关于这方面的文章的任何链接都很好。您可以使用下拉列表中的不同值保留一个缓存,这似乎是合理的,或者如果这些值不是动态的,您可以使用枚举 另一个解决方案是将shortcode字段作为表的主键,所有问题都将得到解决