所以我有......
public class User
{
public int ManagerId { get; set; }
public Manager Manager { get; set; }
}
public class Manager
{
public User User { get; set; }
}
modelBuilder.Entity<User>()
.HasOptional(x => x.Manager)
.WithOptionalDependent(x => x.User);
因此,用户具有可选的管理器,而管理员可能拥有或可能没有用户。这适用于管理器没有用户的外键,但用户具有可管理的外键。但它生成外键并将ManagerId视为常规属性。我该如何解决这个问题?
干杯,伊恩。
答案 0 :(得分:1)
这是一对一的关系。仅当外键构建在主键之上时,它才有效。你需要这样的东西:
public class User
{
[Key, ForeingKey("Manager")]
public int Id { get; set; }
public Manager Manager { get; set; }
}
public class Manager
{
public int Id { get; set; }
public User User { get; set; }
}
如果经理有用户,则用户必须具有与经理相同的PK值。您将无法在双方都定义此类关系可选,因为它会违反FK。在流畅的映射中,您应该执行以下操作:
modelBuilder.Entity<Manager>()
.HasOptional(m => m.User)
.WithRequired(u => u.Manager);