没有保存额外字段的mvc3实体对象

时间:2011-09-14 18:54:28

标签: entity-framework asp.net-mvc-3

我正在用Entity编写一个mvc3应用程序。我是.net和实体的新手,所以这个问题可能是基本的。

我有一个模型,表示一个被保存到数据库的对象。但我希望在创建和编辑表单上有一个额外的字段显示,而不会保存到数据库中。

有没有办法指定字段不与对象的其余部分一起保存?另外,有没有办法在创建而不是编辑时创建一个字段?

我只是硬代码,但我想将它包含在可以在实体模型上设置的验证中。

我首先使用实体​​代码。

1 个答案:

答案 0 :(得分:3)

您可以使用视图模型进行显示或编辑,同时将视图模型保存到域模型(不包括非所需字段),然后保存。您可以使用工具auto mapper将视图模型映射到域模型。

例如,您有一个域类人员

public class Person
{
public string Name {get; set;}
public string Address {get; set;}
}

然后你制作一个视图模型

public class VMPerson
{
public string Name {get; set;}
public string Address {get; set;}
public int Age{get;set;}
}

将数据提取到视图模型中并将其传递给您的视图,查询可能看起来像

var q = (from p in db.Person 
        select new VMPerson{
         Name = p.name,
         Address = p.address,
         Age = 16
         }).SingleOrDefault();

return q;

在您的视图中,年龄也将显示,然后在帖子

[HttpPost]
public ActionResult Person(VMPerson vmperson)
{
Person p = new Person()// your domain object
// mapping part here
p.name =  vmperson.name;
p.address = vmperson;

TryUpdateModel(p);
db.Person.Save();
}