Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何基于键将实体框架映射到子-父查找表_Sql_Entity Framework_Parent Child - Fatal编程技术网

Sql 如何基于键将实体框架映射到子-父查找表

Sql 如何基于键将实体框架映射到子-父查找表,sql,entity-framework,parent-child,Sql,Entity Framework,Parent Child,我有一个数据库,它有一个父子查找我的下拉列表值,有一个域表,它表示下拉列表的类型,即标题、婚姻状况、国家,还有一个查找与这些下拉列表相关的值,我们称之为域值 乙二醇 标题域表 MR域值表 MRS域值表 未命中域值表 医生域值表 婚姻状况域表 单域值表 已婚域值表 离异域值表 我发现自己编写了丑陋的代码,暴露了下面类似的底层实现 using (var db = new OrderContext()) { ... var maritalStatusId = (

我有一个数据库,它有一个父子查找我的下拉列表值,有一个域表,它表示下拉列表的类型,即标题、婚姻状况、国家,还有一个查找与这些下拉列表相关的值,我们称之为域值

乙二醇 标题域表

MR域值表 MRS域值表 未命中域值表 医生域值表 婚姻状况域表

单域值表 已婚域值表 离异域值表 我发现自己编写了丑陋的代码,暴露了下面类似的底层实现

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字段作为表的主键,所有问题都将得到解决