每个 table 中的列名必须是唯一的。 table 'UserLogins' 中的列名 'department_Id' 被多次指定
Column names in each table must be unique. Column name 'department_Id' in table 'UserLogins' is specified more than once
class UserLogin
{
[Key]
public int id { get; set; }
[StringLength(50)]
public string userName { get; set; }
[StringLength(20)]
public string password { get; set; }
public virtual Modules module { get; set; }
public virtual Company company { get; set; }
public virtual Department department { get; set; }
}
class Department
{
[Key]
public int Id { get; set; }
[Required]
[StringLength(50)]
public string DeptName { get; set; }
[Required]
[StringLength(50)]
public string DeptGroup { get; set; }
[Required]
[StringLength(15)]
public string userComputer { get; set; }
[Required]
public DateTime enterDate { get; set; }
[Required]
public virtual UserLogin createdBy { get; set; }
public DateTime updateDate { get; set; }
public virtual UserLogin updatedBy { get; set; }
public virtual ICollection<UserLogin> userLogin { get; set; }
这些是我在 C# Entity framework 的代码优先方法中使用的 2 table 配置。
但是在我创建迁移代码后,创建了以下配置
CreateTable(
"dbo.UserLogins",
c => new
{
id = c.Int(nullable: false, identity: true),
userName = c.String(maxLength: 50),
password = c.String(maxLength: 20),
company_id = c.Int(),
Department_Id = c.Int(),
department_Id = c.Int(),
module_id = c.Int(),
})
.PrimaryKey(t => t.id)
.ForeignKey("dbo.Companies", t => t.company_id)
.ForeignKey("dbo.Departments", t => t.Department_Id)
.ForeignKey("dbo.Departments", t => t.department_Id)
.ForeignKey("dbo.Modules", t => t.module_id)
.Index(t => t.company_id)
.Index(t => t.Department_Id)
.Index(t => t.department_Id)
.Index(t => t.module_id);
CreateTable(
"dbo.Departments",
c => new
{
Id = c.Int(nullable: false, identity: true),
DeptName = c.String(nullable: false, maxLength: 50),
DeptGroup = c.String(nullable: false, maxLength: 50),
userComputer = c.String(nullable: false, maxLength: 15),
enterDate = c.DateTime(nullable: false),
updateDate = c.DateTime(nullable: false),
createdBy_id = c.Int(nullable: false),
updatedBy_id = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.UserLogins", t => t.createdBy_id, cascadeDelete: true)
.ForeignKey("dbo.UserLogins", t => t.updatedBy_id, cascadeDelete: true)
.Index(t => t.createdBy_id)
.Index(t => t.updatedBy_id);
并出现以下错误消息:每个 table 中的列名必须是唯一的。 table 'UserLogins' 中的列名 'department_Id' 指定了不止一次。
请帮助我找出错误,因为我是 c# Entity Framework?
中代码优先方法的新手
userlogin中有两个department_id table创建代码删除1行
Department_id = c.int()
EF 为 UserLogin.department
添加了 department_id
,为 Department.userLogin
集合添加了 Department_Id
。由于 Department
中的额外 UserLogin
属性,框架似乎无法理解实体是由这些属性连接的。因此,只需帮助 EF 在 InverseProperty
的帮助下将它们连接起来
//[InverseProperty("department")] for C# 5 and lower
[InverseProperty(nameof(UserLogin.department))]
public virtual ICollection<UserLogin> userLogin { get; set; }
使用对 class 有意义且独立的 ID。 ID 的 ID 不是唯一的。
使用类似这样的 ID:
public int LoginID { get; set; }
public int DeptID { get; set; }
这样迁移的问题会更少。
class UserLogin
{
[Key]
public int id { get; set; }
[StringLength(50)]
public string userName { get; set; }
[StringLength(20)]
public string password { get; set; }
public virtual Modules module { get; set; }
public virtual Company company { get; set; }
public virtual Department department { get; set; }
}
class Department
{
[Key]
public int Id { get; set; }
[Required]
[StringLength(50)]
public string DeptName { get; set; }
[Required]
[StringLength(50)]
public string DeptGroup { get; set; }
[Required]
[StringLength(15)]
public string userComputer { get; set; }
[Required]
public DateTime enterDate { get; set; }
[Required]
public virtual UserLogin createdBy { get; set; }
public DateTime updateDate { get; set; }
public virtual UserLogin updatedBy { get; set; }
public virtual ICollection<UserLogin> userLogin { get; set; }
这些是我在 C# Entity framework 的代码优先方法中使用的 2 table 配置。 但是在我创建迁移代码后,创建了以下配置
CreateTable(
"dbo.UserLogins",
c => new
{
id = c.Int(nullable: false, identity: true),
userName = c.String(maxLength: 50),
password = c.String(maxLength: 20),
company_id = c.Int(),
Department_Id = c.Int(),
department_Id = c.Int(),
module_id = c.Int(),
})
.PrimaryKey(t => t.id)
.ForeignKey("dbo.Companies", t => t.company_id)
.ForeignKey("dbo.Departments", t => t.Department_Id)
.ForeignKey("dbo.Departments", t => t.department_Id)
.ForeignKey("dbo.Modules", t => t.module_id)
.Index(t => t.company_id)
.Index(t => t.Department_Id)
.Index(t => t.department_Id)
.Index(t => t.module_id);
CreateTable(
"dbo.Departments",
c => new
{
Id = c.Int(nullable: false, identity: true),
DeptName = c.String(nullable: false, maxLength: 50),
DeptGroup = c.String(nullable: false, maxLength: 50),
userComputer = c.String(nullable: false, maxLength: 15),
enterDate = c.DateTime(nullable: false),
updateDate = c.DateTime(nullable: false),
createdBy_id = c.Int(nullable: false),
updatedBy_id = c.Int(nullable: false),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.UserLogins", t => t.createdBy_id, cascadeDelete: true)
.ForeignKey("dbo.UserLogins", t => t.updatedBy_id, cascadeDelete: true)
.Index(t => t.createdBy_id)
.Index(t => t.updatedBy_id);
并出现以下错误消息:每个 table 中的列名必须是唯一的。 table 'UserLogins' 中的列名 'department_Id' 指定了不止一次。 请帮助我找出错误,因为我是 c# Entity Framework?
中代码优先方法的新手userlogin中有两个department_id table创建代码删除1行 Department_id = c.int()
EF 为 UserLogin.department
添加了 department_id
,为 Department.userLogin
集合添加了 Department_Id
。由于 Department
中的额外 UserLogin
属性,框架似乎无法理解实体是由这些属性连接的。因此,只需帮助 EF 在 InverseProperty
//[InverseProperty("department")] for C# 5 and lower
[InverseProperty(nameof(UserLogin.department))]
public virtual ICollection<UserLogin> userLogin { get; set; }
使用对 class 有意义且独立的 ID。 ID 的 ID 不是唯一的。
使用类似这样的 ID:
public int LoginID { get; set; }
public int DeptID { get; set; }
这样迁移的问题会更少。