为了账号安全,请及时绑定邮箱和手机立即绑定

无法确定导航属性表示的关系

无法确定导航属性表示的关系

C#
精慕HU 2021-05-17 21:22:58
尝试保存实体时出现客户端错误。2个表同时具有一对多和一对零关系,这会导致以下错误:无法确定由“用户”类型的导航属性“ Group.LockedByUser”表示的关系。手动配置关系,或者使用“ [NotMapped]”属性或“ OnModelCreating”中的“ EntityTypeBuilder.Ignore”忽略此属性这些是我目前的情况:用户实体public class User{    [Key]    public int UserId { get; set; }    public string Username { get; set; }    public int GroupId { get; set; }    public Group GroupThisUserBelongsTo { get; set; }    public ICollection<Group> GroupsLockedByThisUser { get; set; }    public ICollection<Config> Configs { get; set; }}集团实体public class Group{     [Key]    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]    public int GroupId { get; set; }    public string GroupName { get; set; }    public int? LockedByUserId { get; set; }    public User LockedByUser { get; set; }    public ICollection<User> Users { get; set; }}DbContext1提取modelBuilder.Entity<Group>(entity =>        {            entity.HasOne(d => d.LockedByUser)                .WithMany(p => p.GroupsLockedByThisUser)                .HasForeignKey(d => d.LockedByUserId);        }modelBuilder.Entity<User>(entity =>        {            entity.HasOne(d => d.GroupThisUserBelongsTo)                .WithMany(p => p.Users)                .HasForeignKey(d => d.GroupId)                .OnDelete(DeleteBehavior.ClientSetNull);        });配置实体public class Config{    [Key]    public int ConfigId { get; set; }    public int UserId { get; set; }    public string Config { get; set; }    public User User { get; set; }}dbContext2提取 modelBuilder.Entity<Config>(entity =>        {            entity.HasOne(d => d.User)                .WithMany(p => p.Configs)                .HasForeignKey(d => d.UserId);        });产生错误的代码如下:var config = new Config {            UserId = 123456,            Config = "test"        };        _dbContext2.Config.Add(config);        _dbContext2.SaveChanges();我真的不明白为什么在尝试保存该实体时会出现客户端错误。错误甚至与我要保存的上下文无关。我的外键设置正确吗?Group有很多User-User有一个Group(FK GroupId)User锁定零个或多个Group(FK LockedByUserId)Config有一个User(FK UserId)
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

正如所解释的这个答案,我需要复制的共享关系。

当使用DbContext2之间的关系UserGroup没有定义。

我可以通过使用单个上下文或让上下文继承定义所有共享关系的主上下文来解决我的问题。


查看完整回答
反对 回复 2021-05-23
  • 2 回答
  • 0 关注
  • 240 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信