C# 为什么实体框架引用的列不';甚至不存在?

C# 为什么实体框架引用的列不';甚至不存在?,c#,entity-framework,c#-4.0,entity-framework-6,ef-code-first,C#,Entity Framework,C# 4.0,Entity Framework 6,Ef Code First,我的项目出错了 列名“InitialsID\u InitialsID”无效。 public User ValidateUser(string Username, string Password) { return uow.UserRepository.GetQueryable().Where(x => x.UserName == Username && x.Password == Password).FirstOrDefault(); } 甚至在整个解决方案中也没

我的项目出错了

列名“InitialsID\u 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; }
}
缩写为.cs

public class Initials
{
    public short InitialsID { get; set; }
    public string Code { get; set; }
}

我使用的是代码优先的方法。

您的数据库似乎没有使用新模型或新模型属性进行迁移, 请迁移您的数据库。 如果使用的是dotnet core,则在项目文件夹类型的cmd中:

dotnet ef migrations add [name]
然后:

dotnet ef databae update

问题在于您的外键配置中。当您引用导航属性
public Initials InitialsID{get;set;}
时,EF正在为此导航属性添加一个隐式外键,按照惯例它是
navigationproperty\u navigationPropertyPrimaryKey
,因此它是
InitialsID\u InitialsID

如果您确实需要
User
model类中的
public Initials Initials{get;set;}
navigaation属性,请按如下方式编写外键配置:

public class User
{
    public int UserID { get; set; }
    public int UserGroupID { get; set; }

    ......................

    public short InitialsId { get; set; }
    public Initials Initials { get; set; }
}

您使用的是代码优先的方法?是的,CF approachI可能是错误的,但是公共初始值InitialsID{get;set;}不应该是公共的虚拟初始值Initials{get;set;},并添加一个属性public short InitialsID{get;set;}@PiotrWojsa:嘿,它起作用了。但我不知道为什么一个虚拟人会这么做。