2015-06-25 49 views
0

我有一个拥有单个子元素的抽象基类。为基类成功创建了一个表,并使用子数据填充表。如何在单个子类中包含“鉴别器”列

但是,没有鉴别器列。

如果我创建另一个子类并重新运行迁移,EF将创建鉴别器列。它还可以运行种子方法,并重新创建我最初的记录,因为它不再认为现有的数据(因为新的鉴别是空白的现有记录)

我们将在未来增加更多的子类。我想现在(初学者)有鉴别器来防止数据问题,当我们添加这些新类时。

在.NET 4.5

+0

也许它会有助于看到你的种子。你可能需要改变你的种子才能使它起作用。另一种选择是确保种子不会运行,除非您创建的数据库适用于您的用例。 – jjj

+0

什么是“鉴别器”列? –

+0

Sam:这是EF用于区分存储在单个表中的不同类(父,子)的默认名称 –

回答

1

您可以指定在OnModelCreating覆盖用流利的API鉴别列的值使用实体框架6(TPH)(这将确保EF在方案中添加列):

modelBuilder.Entity<Child>() 
    .Map<Child>(m => m.Requires("Discriminator").HasValue("Child")); 

您还可以,如果你想改变鉴别列的名称:

modelBuilder.Entity<Course>() 
    .Map<Course>(m => m.Requires("Type").HasValue("Course")) 
    .Map<OnsiteCourse>(m => m.Requires("Type").HasValue("OnsiteCourse")); 

参考:

Mapping TPH inheritance

相关问题