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中导航属性的配置。