0
我有一个拥有单个子元素的抽象基类。为基类成功创建了一个表,并使用子数据填充表。如何在单个子类中包含“鉴别器”列
但是,没有鉴别器列。
如果我创建另一个子类并重新运行迁移,EF将创建鉴别器列。它还可以运行种子方法,并重新创建我最初的记录,因为它不再认为现有的数据(因为新的鉴别是空白的现有记录)
我们将在未来增加更多的子类。我想现在(初学者)有鉴别器来防止数据问题,当我们添加这些新类时。
在.NET 4.5
我有一个拥有单个子元素的抽象基类。为基类成功创建了一个表,并使用子数据填充表。如何在单个子类中包含“鉴别器”列
但是,没有鉴别器列。
如果我创建另一个子类并重新运行迁移,EF将创建鉴别器列。它还可以运行种子方法,并重新创建我最初的记录,因为它不再认为现有的数据(因为新的鉴别是空白的现有记录)
我们将在未来增加更多的子类。我想现在(初学者)有鉴别器来防止数据问题,当我们添加这些新类时。
在.NET 4.5
您可以指定在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"));
参考:
也许它会有助于看到你的种子。你可能需要改变你的种子才能使它起作用。另一种选择是确保种子不会运行,除非您创建的数据库适用于您的用例。 – jjj
什么是“鉴别器”列? –
Sam:这是EF用于区分存储在单个表中的不同类(父,子)的默认名称 –