我的模型类是:

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列。 在民意调查的“创建”视图中,我也想指定新民意调查所属的UserId,但是intellisense显示无法访问model.UserId,存在model.User.Id,这不允许我为其创建民意调查现有用户,而是使用新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>

那么,为现有用户创建新投票的正确方法是什么?

===============>>#1 票数:0

我认为您的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; }

}

如果PollUser_Id有一列,则您的模型也应具有此列。 然后,您可以仅将User_Id分配给“ Poll ,实体框架将负责正确链接到正确的User对象。

此外,请考虑使您的关联属性(Poll.User和User.Polls)成为虚拟的,以便使用实体框架的延迟加载机制。 看到这个

===============>>#2 票数:0 已采纳

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; }
}

  ask by mishap translate from so

未解决问题?本站智能推荐: