如何通过 Fluent API 更改数据库列名称

How to change database column name via Fluent API

我有以下代码:

public abstract class Entity
{
    public virtual int Id { get; set; }
}

public class Category : Entity
{
    public string Name { get; set; }
    public virtual ICollection<Category> Children { get; set; }
    public virtual ICollection<Item> Items { get; set; }
}

public class Item : Entity
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    public DateTime DateCreated { get; set; }
    public virtual Category Category { get; set; }
}

这种语法

modelBuilder.Entity<Category>().Property(x => x.Children).HasColumnName("CategoryID");

给我严重性代码描述项目文件行 错误 CS0453 类型 'ICollection' 必须是不可为 null 的值类型才能将其用作泛型类型或方法 'StructuralTypeConfiguration.Property(Expression>)'

中的参数 'T'

问:如何通过 Fluent 更改数据库列名称API?

集合本身无法映射到一列。您应该将其映射为一对多关联:

modelBuilder.Entity<Category>()
            .HasMany(c => c.Children)
            .WithOptional()
            .Map(m => m.MapKey("CategoryID"));