我正在用Entity编写一个mvc3应用程序。我是.net和实体的新手,所以这个问题可能是基本的。
我有一个模型,表示一个被保存到数据库的对象。但我希望在创建和编辑表单上有一个额外的字段显示,而不会保存到数据库中。
有没有办法指定字段不与对象的其余部分一起保存?另外,有没有办法在创建而不是编辑时创建一个字段?
我只是硬代码,但我想将它包含在可以在实体模型上设置的验证中。
我首先使用实体代码。
答案 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();
}