繁体   English   中英

实体框架代码优先TPH,其中鉴别符大于0

[英]Entity Framework code first TPH where discriminator is greater than 0

我在EF4 CTP5中定义一个模型,仅在id的值大于0时才需要映射继承的实体。代码看起来像这样。

public class Parent
{
   public int ID { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

public class Child : Parent
{
   public int SchoolID { get; set; }
}

在OnModelCreating方法中...

modelBuilder.Entity<Parent>().Map<Child>(
            reg => 
                {
                reg.MapInheritedProperties();
                reg.Requires("SchoolID").HasValue((int)<value greater than 0); <== Pseudo code
            }).ToTable("Users");

这种事情可能吗? 如果不是,是否可以完全忽略歧视者?

不确定“是否可能”部分,但是闻起来有点。 我的意思是,它暗示着数据中真正不应该存在的含义; 您将面临长期可维护性问题。 鉴别符不仅可以帮助ORM找出哪条记录属于哪种类型,还应该(imo)您正在处理的类型的逻辑描述,以供人类在对db运行SQL查询时使用。 它还可以用于帮助索引分区。 我意识到无论如何TPH都是非规范化的,但是您仍然希望能够设计一个索引良好的数据库。

我建议您让EF根据类型名称为您做区分符,默认名称为iirc。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM