实体框架代码第一个TPH其中鉴别符大于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是默认值。

链接地址: http://www.djcxy.com/p/83235.html

上一篇: Entity Framework code first TPH where discriminator is greater than 0

下一篇: ThreeJS First person camera 'resets' when moving the mouse