2014-06-24 33 views
0

我正在使用实体框架6.0代码优先实体框架无法识别导航属性

我想创建该表

enter image description here

这是用户模型。

public partial class User : IUser 
    { 
     public virtual string Firstname { get; set; } 

     public virtual string Lastname { get; set; } 

     public virtual User ManagerUser { get; set; } 

     [ForeignKey("ManagerUser")] 
     public virtual Nullable<int> ManagerUserID { get; set; } 

     [Key] 
     public virtual int UserID { get; set; } 
    } 

这是我得到的是创建

enter image description here

为什么结果是什么,我试图达到不同的表时?

我该如何改变以获得表格,因为我需要它?

+0

你永远不会能够创建的顶级表。你的外键被定义为非空,但你不能有一个不空的自引用外键。 – Dismissile

+0

嗯,你当然可以有一个可空的自引用数据库的FK首先,你只需将多重性设置为0..1,但我还没有尝试过与代码第一次实现。 – Madullah

+0

删除了答案,因为它似乎没有增加价值。你看过Fluent Mapping API吗?它有一个.HasOptional(),我认为你可以定义一个可空的FK,不确定这是否是你的设置中的一个选项? – Madullah

回答

0

我已经使用这个代码

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
    modelBuilder.Entity<EFUser>() 
    .HasOptional(c => c.ManagerUser) 
    .WithMany() 
    .HasForeignKey(c => c.ManagerUserID); 
    } 

这将是巨大的使用属性有解决方案解决了,那时我会使用这个技术