#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_InitialsID’.
public User ValidateUser(string Username, string Password)
{
return uow.UserRepository.GetQueryable().Where(x => x.UserName == Username amp;amp; 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.
Комментарии:
1. Вы используете подход code first?
2. да, подход CF
3. Возможно, я ошибаюсь, но разве публичные инициалы InitialsID { get; set; } не должны быть скорее публичными виртуальными инициалами Initialsid { get; set; } и добавить еще одно свойство public short InitialsID {get;set;}
4. @PiotrWojsa: привет, это сработало. Но не знаю, почему виртуальный сделал трюк.
Ответ №1:
Проблема в вашей конфигурации внешнего ключа. Когда вы ссылаетесь на свойство навигации public Initials InitialsID { get; set; }
, EF добавляет неявный внешний ключ для этого свойства навигации, и это по соглашению navigationPropery_navigationPropertyPrimaryKey
, и, следовательно, это InitialsID_InitialsID
Если вам действительно нужно public Initials Initials { get; set; }
свойство navigaation в User
классе модели, запишите конфигурацию внешнего ключа следующим образом:
public class User
{
public int UserID { get; set; }
public int UserGroupID { get; set; }
......................
public short InitialsId { get; set; }
public Initials Initials { get; set; }
}
Ответ №2:
Кажется, ваша база данных не перенесена с помощью новой модели или нового свойства models, просьба перенести вашу базу данных. Если вы используете ядро dotnet, в cmd введите папку проекта:
dotnet ef migrations add [name]
и затем:
dotnet ef databae update