您不能将原始类型映射到表,因此您应该使用其他实体而不是字符串列表:
public class TableABC
{
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public virtual List<Colour> Colours { get; set; }
public virtual List<Pet> Pets { get; set; }
}
public class Colour
{
public int Id { get; set; }
public string Value { get; set; }
}
public class Pet
{
public int Id { get; set; }
public string Name { get; set; }
}
以下是映射(覆盖自定义 DbContext 的 OnModelCreating 方法以提供映射):
modelBuilder.Entity<TableABC>().Property(t => t.Name).HasColumnName("name");
modelBuilder.Entity<TableABC>().Property(t=>t.Surname).HasColumnName("surname");
modelBuilder.Entity<TableABC>()
.HasMany(t => t.Colours).WithRequired().HasForeignKey(c => c.Id);
modelBuilder.Entity<TableABC>()
.HasMany(t => t.Pets).WithRequired().HasForeignKey(p => p.Id);
modelBuilder.Entity<Colour>().Property(c => c.Value).HasColumnName("colours");
modelBuilder.Entity<Colour>().HasKey(c => new { c.Id, c.Value });
modelBuilder.Entity<Pet>().Property(p => p.Name).HasColumnName("pets");
modelBuilder.Entity<Pet>().HasKey(c => new { c.Id, c.Name });
请记住,我对颜色和宠物使用了复合键,并且它对于所有记录都应该是唯一的。