Entity Framework, связь между двумя таблицами - PullRequest
0 голосов
/ 12 декабря 2011

Мои классы моделей:

public class User
{
    public User()
    {
        Polls = new List<Poll>();
    }
    public int Id { get; set; }
    public String FirstName { get; set; }
    public String LastName { get; set; }

    ICollection<Poll> Polls { get; set; }

}

public class Poll
{
    public int Id { get; set; }
    public int PositiveCount { get; set; }
    public int NegativeCount { get; set; }
    public String Description { get; set; }
    public User User { get; set; }

}

public class PollsContext : DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<Poll> Polls { get; set; }
}

EF создал столбец User_Id таблицы для таблицы опросов. В представлении Создать опрос я также хочу указать, что идентификатор пользователя для нового опроса также принадлежит, но intellisense показывает, что нет доступа к model.UserId, есть модель.User.Id, которая не позволяет мне создавать опрос для существующий пользователь, а скорее создает нового пользователя с новым идентификатором, и связь не создается.

<div class="editor-label">
        @Html.LabelFor(model => model.User.Id)
</div>
<div class="editor-field">
        @Html.EditorFor(model => model.User.Id)
        @Html.ValidationMessageFor(model => model.User.Id)
</div>

Каков правильный способ создания нового опроса для существующего пользователя?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2011
public class Poll
{
    public int Id { get; set; }
    public int PositiveCount { get; set; }
    public int NegativeCount { get; set; }
    public String Description { get; set; }
    public int UserId { get; set; }
    public User User { get; set; }
}
0 голосов
/ 12 декабря 2011

Я думаю, что ваш Poll класс должен выглядеть так:

public class Poll
{
    public int Id { get; set; }
    public int PositiveCount { get; set; }
    public int NegativeCount { get; set; }
    public String Description { get; set; }
    public int User_Id { get; set; }
    public User User { get; set; }

}

Если у вас есть столбец в вашей таблице Poll 1006 *, то у вашей модели также должен быть этот столбец. Затем вы можете просто назначить User_Id для Poll, и Entity Framework позаботится о правильной привязке к нужному User объекту.

Кроме того, рассмотрите возможность виртуализации свойств вашей ассоциации (Poll.User и User.Polls), чтобы использовать механизмы отложенной загрузки Entity Framework. См это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...