C# 在模型生成过程中检测到一个或多个验证错误

C# 在模型生成过程中检测到一个或多个验证错误,c#,entity-framework,entity,entity-framework-6,C#,Entity Framework,Entity,Entity Framework 6,我在选择用户时遇到问题 public class UserMap : EntityTypeConfiguration<User> { public UserMap () { ToTable("USERS"); HasKey(e => e.Id); Property(e => e.Id).HasColumnName("ID"); Property(

我在选择用户时遇到问题

  public class UserMap : EntityTypeConfiguration<User>
  {
    public UserMap ()
    {
        ToTable("USERS");
        HasKey(e => e.Id);
        Property(e => e.Id).HasColumnName("ID");
        Property(e => e.Name).HasColumnName("NAME");
        Property(e => e.Password).HasColumnName("PASSWORD");
        Property(e => e.Date).HasColumnName("DATE");
        Property(e => e.Token).HasColumnName("TOKEN");
        Property(e => e.Active).HasColumnName("ACTIVE");

        HasRequired(e => e.Company).WithMany().Map(e => e.MapKey("COMPANY_ID"));
        HasMany(e => e.BranchesUsers).WithRequired().Map(e => e.MapKey("USER_ID"));
    }
  }

public class BranchMap : EntityTypeConfiguration<Branch>
{
    public BranchMap ()
    {
        ToTable("BRANCHES");
        HasKey(e => e.Id);
        Property(e => e.Id).HasColumnName("ID");
        Property(e => e.Name).HasColumnName("NAME");
        Property(e => e.Date).HasColumnName("DATE");
        Property(e => e.Active).HasColumnName("ACTIVE");

        HasRequired(e => e.Company).WithMany().Map(e => e.MapKey("COMPANY_ID"));
        HasMany(e => e.UsersBranches).WithRequired().Map(e => e.MapKey("BRANCH_ID"));
    }
}

public class UserBranchMap : EntityTypeConfiguration<UserBranch>
{
    public UserBranchMap()
    {
        ToTable("USERS_BRANCHES");
        HasKey(e => e.Id);
        Property(e => e.Id).HasColumnName("ID");

        HasOptional(e => e.User).WithMany().Map(e => e.MapKey("USER_ID"));
        HasOptional(e => e.Profile).WithMany().Map(e => e.MapKey("PROFILE_ID"));
        HasOptional(e => e.Branch).WithMany().Map(e => e.MapKey("BRANCH_ID"));
        HasOptional(e => e.Company).WithMany().Map(e => e.MapKey("COMPANY_ID"));
    }
}
公共类用户映射:EntityTypeConfiguration
{
公共用户映射()
{
ToTable(“用户”);
HasKey(e=>e.Id);
属性(e=>e.Id).HasColumnName(“Id”);
属性(e=>e.Name);
属性(e=>e.Password);
属性(e=>e.Date)。HasColumnName(“日期”);
属性(e=>e.Token).HasColumnName(“Token”);
属性(e=>e.Active);
HasRequired(e=>e.Company).WithMany().Map(e=>e.MapKey(“Company_ID”);
有许多(e=>e.BranchesUsers).WithRequired().Map(e=>e.MapKey(“用户ID”);
}
}
公共类BranchMap:EntityTypeConfiguration
{
公共部门地图()
{
可折叠(“分支”);
HasKey(e=>e.Id);
属性(e=>e.Id).HasColumnName(“Id”);
属性(e=>e.Name);
属性(e=>e.Date)。HasColumnName(“日期”);
属性(e=>e.Active);
HasRequired(e=>e.Company).WithMany().Map(e=>e.MapKey(“Company_ID”);
HasMany(e=>e.UsersBranches).WithRequired().Map(e=>e.MapKey(“BRANCH_ID”);
}
}
公共类UserBranchMap:EntityTypeConfiguration
{
公共用户BranchMap()
{
ToTable(“用户/分支机构”);
HasKey(e=>e.Id);
属性(e=>e.Id).HasColumnName(“Id”);
has可选(e=>e.User).WithMany().Map(e=>e.MapKey(“用户ID”));
has可选(e=>e.Profile).WithMany().Map(e=>e.MapKey(“Profile_ID”);
has可选(e=>e.Branch).WithMany().Map(e=>e.MapKey(“Branch_ID”);
has可选(e=>e.Company).WithMany().Map(e=>e.MapKey(“Company_ID”);
}
}
这是我的模型:

   public class User
   {
    public long Id { get; set; }
    public string Name { get; set; }
    public string Password { get; set; }
    public DateTime Date { get; set; }
    public string Token { get; set; }
    public Company Company { get; set; }
    public List<UserBranch> BranchesUsers{ get; set; }
    public bool Active{ get; set; }
   }

public class Branch
{
    public long Id { get; set; }
    public Company Company{ get; set; }
    public string Name { get; set; }
    public DateTime Date { get; set; }
    public List<UserBranch> UsersBranches { get; set; }
    public bool Active { get; set; }
}

   public class UserBranch
   {
    public long Id { get; set; }
    public User User { get; set; }
    public Profile Profile { get; set; }
    public Branch Branch { get; set; }
    public Company Company { get; set; }
   }
公共类用户
{
公共长Id{get;set;}
公共字符串名称{get;set;}
公共字符串密码{get;set;}
公共日期时间日期{get;set;}
公共字符串标记{get;set;}
上市公司{get;set;}
公共列表分支用户{get;set;}
公共bool活动{get;set;}
}
公营部门
{
公共长Id{get;set;}
上市公司{get;set;}
公共字符串名称{get;set;}
公共日期时间日期{get;set;}
公共列表UsersBranches{get;set;}
公共bool活动{get;set;}
}
公共类用户分支
{
公共长Id{get;set;}
公共用户{get;set;}
公共配置文件{get;set;}
公共分支{get;set;}
上市公司{get;set;}
}
执行简单的“选择用户模型”操作时,会出现以下错误:

在模型生成过程中检测到一个或多个验证错误:

USER\u ID:Name:类型中的每个属性名称都必须是唯一的。属性名称“USER\u ID”已定义

分支ID:名称:类型中的每个属性名称必须是唯一的。属性名称“BRANCH_ID”已定义


UserBranch具有分支属性。但是,您告诉EF不要在关系分支UserBranch中使用此导航属性。因此,现在EF仍然必须将分支导航属性映射到外键,因为它已经存在了,所以失败了。您应该使用重载WithRequired(x=>x.Branch)来避免此问题。现在他抛出了这样一个问题:在类型“UserBranch”上声明的导航属性“User”已被配置为具有冲突的多重性。您是否也为用户配置了反向导航属性?另外:您不需要配置两个方向,您可以跳过user和Branch中导航属性的配置。