我有一个员工层级,有老板和下属。
public class Employee
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual string Job { get; set; }
public virtual Employee Boss { get; set; }
public virtual ICollection<Employee> Subordinates { get; set; }
}
我尝试按如下方式对其进行配置:
internal class EmployeeConfiguracao : EntityTypeConfiguration<Employee>
{
public EmployeeConfiguracao()
{
HasOptional(p => p.Boss).WithMany(p => p.Subordinates).WillCascadeOnDelete(false);
}
}
但是Add-Migration Init
的结果
请注意,Boss不是null,但是可选(总统没有老板)
CreateTable(
"dbo.Employees",
c => new
{
Id = c.Int(nullable: false, identity: true),
Name = c.String(nullable: false, maxLength: 90),
Job = c.String(),
Boss_Id = c.Int(),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.Employees", t => t.Boss_Id)
.Index(t => t.Boss_Id);
如何设置此层次结构,以便可以在没有老板(作为总统)的情况下使用
答案 0 :(得分:0)
如果Boss应该可以为空,那么应该像这样定义:
Boss_Id = c.Int(nullable: false)
如果设置如下:
Boss_Id = c.Int()
然后将使用nullable的默认值,这是真的,所以它就像你想要的那样。