0

Я использую сущность framework версии 6 в своем приложении MVC5. модель данных I (EDMX-) содержит 2 лиц пользователя и Role, соответствующий мои таблицы в базе данных Пользователей и Роли.Entity Framework 6 добавляет подчеркивание с столбцами внешнего ключа

Пользователи таблица содержит столбцы: Id INT, имя NVARCHAR (100), Int Идентификатор роли (Идентификатор роли имеет ограничение внешнего ключа с Roles.Id)

Роли таблица содержит столбцы: Id ИНТ Имя nVarchar (100)

Модель My Entity генерирует правильные объекты в соответствии с табличной структурой.

Теперь, когда я запрашивая Пользователь объект (_db.Users.ToList()) из БД контекста, рамки субъект ищет столбца ROLE_ID в таблице пользователей вместо столбца Идентификатор роли, следовательно, приводит к ошибке.

Итак, мой вопрос в том, почему генератор запросов сущностей генератора ищет столбец Role_Id во время запроса объекта?

ответ

0

Пользователи и роли обычно имеют отношение «многие ко многим», поэтому у вас должны быть соответствующие отношения, определенные как для пользователей, так и для ролей.

public class Users 
{ 
    public int Id { get; set; } 
    public string UserName { get; set; } 

    public virtual ICollection<Role> Roles{ get; set; } 
} 

public class Role 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 

    public virtual ICollection<User> Users{ get; set; } 
} 

Вы также можете явно определить ассоциацию в качестве субъекта, если вы хотите добавить больше атрибутов отношения:

public class UserRoles// Association table implemented as entity 
{ 
    public int UserId{ get; set; } 
    public virtual User User{ get; set; } 
    public int RoleId{ get; set; } 
    public virtual Role Role{ get; set; } 
    public DateTime AssignmentDate{ get; set; } 
} 

Вы можете также определить отношения явно http://www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx

Наконец , вы также можете использовать DataAnnotions Create Foreign Key using Data Annotations

+0

Спасибо, но мой вопрос в том, почему генератор запросов фреймворка сущностей ищет столбец Role_Id wh ile запрашивающий объект? –

+0

Это происходит потому, что EF не понимает, что RoleId является внешним ключом, поэтому он добавляет вам новое поле внешнего ключа. EF-соглашение для именования автоматически вставленных полей внешнего ключа - tablename_Id, что именно то, что вы видите. Если вы разместите свой код определения класса, мы сможем рассказать вам, что не так. – spadelives

Смежные вопросы