我的项目抛出错误
无效的列名“ 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; }
}
我正在使用“代码优先”方法。
答案 0 :(得分:2)
问题出在外键配置中。当您引用导航属性public Initials InitialsID { get; set; }
时,EF会为此导航属性添加一个隐式外键,按照约定navigationPropery_navigationPropertyPrimaryKey
,因此它是InitialsID_InitialsID
如果您确实想要public Initials Initials { get; set; }
模型类中的User
导航属性,请按如下所示编写外键配置:
public class User
{
public int UserID { get; set; }
public int UserGroupID { get; set; }
......................
public short InitialsId { get; set; }
public Initials Initials { get; set; }
}
答案 1 :(得分:1)
似乎您的数据库未使用新模型或新模型属性进行迁移, 请迁移您的数据库。 如果您使用的是dotnet core,请在项目文件夹中的cmd中输入:
a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint
然后:
dotnet ef migrations add [name]