Почему структура сущности ссылается на столбец, который даже не существует? - PullRequest
1 голос
/ 16 апреля 2019

Мой проект выдает ошибку

Неверное имя столбца '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.

Ответы [ 2 ]

2 голосов
/ 16 апреля 2019

Проблема в конфигурации вашего внешнего ключа. Когда вы ссылаетесь на свойство навигации 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 голос
/ 16 апреля 2019

Кажется, ваша база данных не перенесена с новой моделью или новым свойством модели, Просьба перенести вашу базу данных. Если вы используете ядро ​​dotnet, в cmd в папке проекта введите:

dotnet ef migrations add [name]

и затем:

dotnet ef databae update
...