使用TPT和表拆分时实体框架3033错误

时间:2017-12-16 20:09:36

标签: c# sql entity-framework-6

我有一个抽象的FileSystemItem类,它被映射到一个表(" FileSystemItem")和一个从它继承的File类,它被映射到另一个表(" File")。 然后使用延迟加载我将带有二进制数据的FileContents类添加到File,并将其映射到File表:

//The entities:
public abstract class FileSystemItem
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class File : FileSystemItem
{
    public string FileInfo { get; set; }
    public virtual FileContents Contents { get; set; }
}

public class FileContents
{
    public int Id { get; set; }
    public byte[] Contents { get; set; }
}

public class Context : DbContext
{
    public DbSet<FileSystemItem> FileSystemItem { get; set; }

    //creating the model with fluent api:
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<FileSystemItem>().ToTable("FileSystemItem");
        modelBuilder.Entity<File>().ToTable("File");
        modelBuilder.Entity<FileContents>().ToTable("File");

        modelBuilder.Entity<File>()
            .HasRequired(f => f.Contents)
            .WithRequiredPrincipal()
            .WillCascadeOnDelete(false);
    }
}

数据库是按预期创建的,但是当我尝试插入文件时会抛出此错误:

MappingException: (20,10):错误3033:从第20行开始映射片段的问题:EntitySets&#39; FileContents&#39;和&#39; FileSystemItem&#39;都被映射到表格&#39;文件&#39;。他们的主键可能会发生碰撞。

我做错了什么?

0 个答案:

没有答案