Entity Framework - Неверное имя столбца 'User_ID " - PullRequest
0 голосов
/ 01 марта 2019

У меня есть проект, написанный с C# на вершине ASP.NET MVC 5 framework.Я использую 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 Ответ

0 голосов
/ 01 марта 2019

Попробуйте добавить атрибут внешнего ключа в свойство навигации ICollection:

[ForeignKey("UserId")]
public virtual ICollection<ClassRoom> AvailableClassRooms { get; set; } 

Поскольку вы изменили соглашение об именах, вы должны установить его с обеих сторон отношения.

Я обычно предпочитаю делать это, используя свободный API EF, так как он более гибкий, и вы не будете использовать магические строки.

...