如何包括“;鉴别器”;具有单个子类的列
本文关键字:单个 子类 何包括 鉴别 | 更新日期: 2023-09-27 17:59:52
我有一个抽象基类,它只有一个子类。已成功为基类创建一个表,并使用子数据填充该表。
但是,没有鉴别器列。
如果我创建另一个子类并重新运行迁移,EF将创建鉴别器列。它还运行Seed方法并重新创建我的初始记录,因为它不再看到现有数据(因为新的鉴别器对现有记录是空的)
我们将来会增加更多的儿童班。我希望现在(在初学者中)有鉴别器,以防止在添加这些新类时出现数据问题。
在.NET 4.5 上使用实体框架6(TPH)
您可以在OnModelCreating
覆盖中使用fluent api指定鉴别器列的值(这将确保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"));
参考:
映射TPH继承