使用Entity Framework的Model上的DisplayName

时间:2011-05-04 20:19:50

标签: c# asp.net asp.net-mvc asp.net-mvc-3

我有一个看起来像这样的代码:

public class MyModel
{
    [Required]
    [Display(Name = "labelForName", ResourceType = typeof(Resources.Resources))]
    public string name{ get; set; }
}

问题是在生成的Entity Framework模型类中添加了属性Display和Required。我知道我可以使用Partial添加功能但是如何将属性添加到将使用ORM擦除和更新的类?

2 个答案:

答案 0 :(得分:8)

根据我的经验,数据库中的模型很少与网页中使用的模型相同。你总是需要某种改变。因此使用ViewModel s。另一个好处是,如果实体模型发生变化,使用ViewModel的所有网页都不会中断。

至于安全性,如果您有public ActionResult Save(MyEntityModel model)可能导致安全漏洞,因为用户可能会弄​​清楚如何将值发布到不应更改的属性(例如Role,{{ 1}},Status或其他)。

让自己熟悉一个映射器(比如automapper),并将属性放在ViewModel上。

答案 1 :(得分:3)

您是否考虑过T4模板来修改生成的代码。

http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx

在处理生成的代码时,我倾向于将T4模板与部分类结合使用。