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

时间:2014-09-02 09:47:59

标签: sql entity-framework parent-child

我有一个父子查找我的下拉值的数据库,有一个域表代表它的下拉类型,即" TITLE"," MARITAL_STATUS& #34;,"国家"并且查找与我们称之为域值的每个下拉列表相关联的值

EG TITLE(域表)

  • MR(域值表)
  • MRS(域值表)
  • MISS(域名表)
  • DOCTOR(域值表)

MARITAL_STATUS(域名表)

  • SINGLE(域值表)
  • MARRIED(域值表)
  • DIVORCED(域值表)

我发现自己编写的丑陋代码暴露了类似于下面

的低位实现
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();
}

,导航属性处理插入?

如果是,我如何设置?

任何关于此的文章的链接都会很好。

1 个答案:

答案 0 :(得分:0)

您可以使用下拉列表的不同值保留缓存,这似乎是合理的,或者如果值不是动态的,您可以使用枚举。

另一个解决方案是将短代码字段作为表格的主键,所有问题都将得到解决。