问题描述
.NET 5预览版8刚刚发布,我一直在测试全新的TPT功能。我已经安装了.NET 5预览版8 Runtime和SDK。
我创建了一个.NET Core类库,安装了dotnet-ef
预览版8 NuGet,并使用以下命令(管理员)更新了dotnet-ef
工具:
dotnet tool update --global dotnet-ef --version 5.0.0-preview.8.20407.4
我已经建立了以下数据库模型:
public class MintPlayerContext : DbContext
{
// dotnet ef migrations add AddInitialEntities
// dotnet ef --version
public MintPlayerContext()
{
}
public DbSet<Subject> Subjects { get; set; }
public DbSet<Person> People { get; set; }
public DbSet<Artist> Artists { get; set; }
public DbSet<Song> Songs { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);
optionsBuilder.UsesqlServer(@"Server=(localdb)\mssqllocaldb;Database=MintPlayerTPT;Trusted_Connection=True;ConnectRetryCount=0");
}
}
[Table("Subjects")]
public class Subject
{
public int Id { get; set; }
public string Memo { get; set; }
}
[Table("People")]
public class Person : Subject
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
[Table("Artists")]
public class Artist : Subject
{
public string Name { get; set; }
public int YearStarted { get; set; }
public int YearQuit { get; set; }
}
[Table("Songs")]
public class Song : Subject
{
public string Title { get; set; }
public DateTime Released { get; set; }
}
并创建/执行数据库迁移:
dotnet ef migrations add AddInitialEntities
dotnet ef database update
以某种方式将其显示在下表中:
表之间的胶水似乎丢失了。甚至更奇怪的是https://devblogs.microsoft.com/dotnet/announcing-entity-framework-core-ef-core-5-0-preview-8/#table-per-type-tpt-mapping的TPT说明,他们指出Pet
表获得了AnimalId
列。使用TPT时,预计Animal
表将包含一些AnimalType
和AnimalTypeId
列。
那么这是怎么回事?这是一个误解吗?还是Microsoft(出于性能考虑)仍然坚持某些衍生的数据库结构?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)