【发布时间】:2017-01-24 15:34:13
【问题描述】:
我需要为同一张表上的一对多关系创建一个可为空的外键:
public class NavigationMenu
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public NavigationMenu()
{
MenuChildren = new HashSet<NavigationMenu>();
}
public string Text { get; set; }
public string Action { get; set; }
public string Controller { get; set; }
public string Icon { get; set; }
public bool Selected { get; set; }
public int? NavigationMenuId { get; set; }
public virtual ICollection<NavigationMenu> MenuChildren { get; set; }
public virtual NavigationMenu NavigationMenus2 { get; set; }
}
使用 Fluent Api 但我不知道哪个定义是正确的,这个:
modelBuilder.Entity<NavigationMenu>()
.HasOptional(c => c.NavigationMenus2)
.WithMany(c => c.MenuChildren)
.HasForeignKey(c => c.NavigationMenuId);
或:
modelBuilder.Entity<NavigationMenu>()
.HasMany(e => e.MenuChildren)
.WithOptional(e => e.NavigationMenus2)
.HasForeignKey(e => e.NavigationMenuId);
【问题讨论】:
-
两者都是正确的。
标签: c# entity-framework one-to-many foreign-key-relationship ef-fluent-api