实体框架核心自引用可选属性

时间:2016-10-10 08:08:30

标签: c# entity-framework-core

我正在使用Microsoft.EntityFrameworkCore.Sqlite v1.0.1。 这是我的实体:

public class Category
{
    public int CategoryId { get;set;}
    public Category ParentCategory { get; set; }
    public int? ParentCategoryId { get; set; }
    public string Name { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime DateModified { get; set; }
}

所以我需要将ParentCategory配置为可选属性。我怎么能在EF核心中做到这一点? 这是我迄今为止流畅的映射:

modelBuilder.Entity<Category>(e =>
{
    e.HasKey(c => c.CategoryId);

    e.Property(c => c.DateCreated).ValueGeneratedOnAdd();
    e.Property(c => c.DateModified).ValueGeneratedOnAddOrUpdate();
});

1 个答案:

答案 0 :(得分:3)

您的ParentCategoryId已经是可选的,因为它可以为空。如果它不可为空,那就是必需的。您不需要进一步配置它。

注意,您不需要将CategoryId配置为Category的密钥。它将被配置为密钥,因为它已遵循实体密钥的命名约定。