为什么 entity framework 引用了一个根本不存在的列?
Why entity framework is referencing a column that doesn't even exist?
我的项目抛出错误
列名称无效 'InitialsID_InitialsID'。
public User ValidateUser(string Username, string Password)
{
return uow.UserRepository.GetQueryable().Where(x => x.UserName == Username && x.Password == Password).FirstOrDefault();
}
即使在整个解决方案中也没有该名称的列。
我生成了一个迁移脚本,里面有那个名字,但我把它改成了 InitialsID,但它仍然要求输入相同的名字。
如何解决?我尝试放置 ForeignKey 属性等但没有任何效果。
User.cs
public class User
{
public int UserID { get; set; }
public int UserGroupID { get; set; }
public UserGroup UserGroup { get; set; }
public string UserName { get; set; }
public string FullName { get; set; }
public string Email { get; set; }
public string Designation { get; set; }
public string Password { get; set; }
public bool? PasswordExpire { get; set; }
public DateTime? ExpiryDate { get; set; }
public bool Status { get; set; }
public DateTime? CreatedOn { get; set; }
public string CreatedBy { get; set; }
public DateTime? ModifiedOn { get; set; }
public string ModifiedBy { get; set; }
public string Office { get; set; }
public string Station { get; set; }
public Initials InitialsID { get; set; }
}
Initials.cs
public class Initials
{
public short InitialsID { get; set; }
public string Code { get; set; }
}
我正在使用 Code First 方法。
您的数据库似乎没有迁移新模型或新模型属性,
请迁移您的数据库。
如果您使用的是 dotnet 核心,请在项目文件夹类型的 cmd 中输入:
dotnet ef migrations add [name]
然后:
dotnet ef databae update
问题出在您的外键配置上。当您引用导航 属性 public Initials InitialsID { get; set; }
时,EF 会为此导航添加一个隐式外键 属性 并且按照约定 navigationPropery_navigationPropertyPrimaryKey
因此它是 InitialsID_InitialsID
如果你真的想要public Initials Initials { get; set; }
navigaation 属性 in User
model class 然后写你的外键配置如下:
public class User
{
public int UserID { get; set; }
public int UserGroupID { get; set; }
......................
public short InitialsId { get; set; }
public Initials Initials { get; set; }
}
我的项目抛出错误
列名称无效 'InitialsID_InitialsID'。
public User ValidateUser(string Username, string Password)
{
return uow.UserRepository.GetQueryable().Where(x => x.UserName == Username && x.Password == Password).FirstOrDefault();
}
即使在整个解决方案中也没有该名称的列。
我生成了一个迁移脚本,里面有那个名字,但我把它改成了 InitialsID,但它仍然要求输入相同的名字。
如何解决?我尝试放置 ForeignKey 属性等但没有任何效果。
User.cs
public class User
{
public int UserID { get; set; }
public int UserGroupID { get; set; }
public UserGroup UserGroup { get; set; }
public string UserName { get; set; }
public string FullName { get; set; }
public string Email { get; set; }
public string Designation { get; set; }
public string Password { get; set; }
public bool? PasswordExpire { get; set; }
public DateTime? ExpiryDate { get; set; }
public bool Status { get; set; }
public DateTime? CreatedOn { get; set; }
public string CreatedBy { get; set; }
public DateTime? ModifiedOn { get; set; }
public string ModifiedBy { get; set; }
public string Office { get; set; }
public string Station { get; set; }
public Initials InitialsID { get; set; }
}
Initials.cs
public class Initials
{
public short InitialsID { get; set; }
public string Code { get; set; }
}
我正在使用 Code First 方法。
您的数据库似乎没有迁移新模型或新模型属性, 请迁移您的数据库。 如果您使用的是 dotnet 核心,请在项目文件夹类型的 cmd 中输入:
dotnet ef migrations add [name]
然后:
dotnet ef databae update
问题出在您的外键配置上。当您引用导航 属性 public Initials InitialsID { get; set; }
时,EF 会为此导航添加一个隐式外键 属性 并且按照约定 navigationPropery_navigationPropertyPrimaryKey
因此它是 InitialsID_InitialsID
如果你真的想要public Initials Initials { get; set; }
navigaation 属性 in User
model class 然后写你的外键配置如下:
public class User
{
public int UserID { get; set; }
public int UserGroupID { get; set; }
......................
public short InitialsId { get; set; }
public Initials Initials { get; set; }
}