为什么实体框架引用了一个甚至不存在的列?

问题描述 投票:1回答:2

我的项目正在抛出错误

列名称'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方法。

c# entity-framework c#-4.0 entity-framework-6 ef-code-first
2个回答
2
投票

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

如果你真的想在qazxsw poi模型类中使用qazxsw poi导航属性,那么编写你的外键配置如下:

public Initials Initials { get; set; }

1
投票

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

User

然后:

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

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

    public short InitialsId { get; set; }
    public Initials Initials { get; set; }
}
© www.soinside.com 2019 - 2024. All rights reserved.