Entity Framework - Неверное имя столбца 'User_ID"
У меня есть проект с C#
на вершине ASP.NET MVC 5 фреймворка. Я использую Entity Framework 6.2 ORM для взаимодействия с моей базой данных.
У меня есть следующие 2 класса сущностей
public class User
{
[Key]
public int Id { get; set;}
public string FirstName { get; set; }
public int? MainClassRoomId { get; set; }
// ....
[ForeignKey("MainClassRoomId")]
public virtual ClassRoom MainClassRoom { get; set; }
public virtual ICollection<ClassRoom> AvailableClassRooms { get; set; }
}
public class ClassRoom
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Title { get; set; }
public int UserId { get; set; }
// ....
[ForeignKey("UserId")]
public virtual User Instructor { get; set; }
}
Я нахожу одного пользователя без проблем, как это
User user = DataContext.Users.FirstOrDefault(x => x.Id == 10);
Однако, если я хочу получить доступ к MainClassRoom
свойство навигации я получаю следующую ошибку
Неверное имя столбца 'User_Id'.
Я получаю вышеуказанную ошибку после выполнения следующего
if(user.MainClassRoom != null)
{
// Some something with user.MainClassRoom
}
Что может быть причиной этой ошибки? Как я могу это исправить?
1 ответ
Попробуйте добавить атрибут внешнего ключа в свойство навигации ICollection:
[ForeignKey("UserId")]
public virtual ICollection<ClassRoom> AvailableClassRooms { get; set; }
Поскольку вы изменили соглашение об именах, вы должны установить его с обеих сторон отношений.
Я обычно предпочитаю делать это, используя свободный API EF, так как он более гибкий, и вы не используете магические строки.