gpt4 book ai didi

c# - 为什么 Entity Framework 引用了一个根本不存在的列?

转载 作者:太空宇宙 更新时间:2023-11-03 22:34:56 25 4
gpt4 key购买 nike

我的项目抛出错误

列名称“InitialsID_InitialsID”无效。

public User ValidateUser(string Username, string Password)
{
return uow.UserRepository.GetQueryable().Where(x => x.UserName == Username && x.Password == Password).FirstOrDefault();
}

在整个解决方案中甚至没有该名称的列。

我已经生成了一个迁移脚本,其中包含该名称,但我将其更改为 InitialsID,但它仍然要求输入相同的名称。

如何解决?我尝试放置 ForeignKey 属性等但没有任何效果。

用户.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; }
}

我正在使用 Code First 方法。

最佳答案

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

如果你真的想要public Initials Initials { get;放; User 模型类中的导航属性,然后如下编写外键配置:

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

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

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

关于c# - 为什么 Entity Framework 引用了一个根本不存在的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55702573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com