现有一个菜单表:
模型代码:
public class MMenu : Entity { /// <summary> /// 菜单编码 /// </summary> public string Code { get; set; } /// <summary> /// 菜单名称 /// </summary> public string Title { get; set; } /// <summary> /// 菜单图标 /// </summary> public string Icon { get; set; } /// <summary> /// 菜单链接 /// </summary> public string NavigateUrl { get; set; } /// <summary> /// 子菜单集合 /// </summary> public virtual ICollection<MMenu> Children { get; set; } /// <summary> /// 父菜单 /// </summary> public virtual MMenu Parent { get; set; } }
我使用下面的Fluent API
public MMenuTypeConfiguration() { HasMany(n => n.Children).WithOptional(n => n.Parent).Map(n => n.MapKey("ParentID")); }
发现表里面的ParentID总是被弄成外键了,导致表里面无数据的情况下,插入不进去任何数据。
求教各位应该怎么写?
WithOptional的话 应该是可空的外键吧? 为什么会加不进去呢
你的MMenu没有设置主键 我按照你的写了 插入一个跟菜单都是可以的
控制台代码: using(var context=new MenuContext()) { MMenu menu = new MMenu { Code="1", Title="firstmenu", Icon="aaa", NavigateUrl="", Parent=null, Children=null }; context.Menus.Add(menu); context.SaveChanges(); } 部分dbcontext代码: [Key] // 这个很重要 /// <summary> /// 菜单编码 /// </summary> public string Code { get; set; }
@mushishi: 主键在基类上。谢谢。
@Kevin.Choi: 哦嘎 那你的问题搞定了么?
@mushishi: 已搞定,就是这个外键太扎眼了,适应CF还需要一段时间。