在MVC中将对象保存到数据库

时间:2016-08-24 13:03:17

标签: asp.net-mvc ef-code-first

我创建了一个代码第一个项目,其中有一个帖子模型和人员模型:

public class post
{
    [Key]
    public int postId { get; set; }
    public string title { get; set; }
    public virtual person sender { get; set; }
}

public class person
{
    [Key]
    public int personId { get; set; }
    public string name { get; set; }
}

我想创建一个帖子,其中存在发件人信息但人被定义为对象。如何在创建新帖子时将现有人员插入帖子?实际上我只能通过从视图中获取值来插入一些字段,如int,string等,但在这种情况下,它不是一个值,它是一个对象,如何插入数据?

e.g。 代码:

ViewBag.personlist = new SelectList(db.persons,"personId","name");

视图:

@Html.DropDownListFor(model => model.sender, (SelectList)ViewBag.personlist, "select item")

在数据库中没有发件人项而是person_postId,因为这个原因dropdownlist为send NULL值,我该如何处理呢?

1 个答案:

答案 0 :(得分:0)

如果我理解你想要什么,你需要将personID外键添加到你的帖子模型中:

 public class post
{
    [Key]
    public int postId { get; set; }
    public int personId { get; set; }
    public string title { get; set; }
    public virtual person sender { get; set; }
}

目前,您拥有导航属性,但没有外键可以将帖子与人员关联起来。以下一行:

public virtual person sender { get; set; }

设置您的导航属性,但是需要人员模型中的personID成为帖子模型中的字段,以便在该人和帖子之间存在记录的链接。实体框架将通过设置导航属性自动将personID标记为外键。