MVC DB first Fix display Name

百般思念 提交于 2019-12-03 16:36:34

问题


I'm using mvc 4, with database first.

Everytime I refresh the model.edmx file, the display name attribute I added is removed. How can I the keep display name attribute between refreshes?


回答1:


You are going to want to use System.ComponentModel.DataAnnotations. Here is a simplistic Example for a 'User' table in EF to show you how:

namespace YourNamespace.BlaBlaBla
{
    [MetadataType(typeof(UserHelper))]
    public partial class User { }

    public class UserHelper
    {
        [Display(Name = "Your New Title For Name")]
        public string Name { get; set; }
    }
}

You can also include validation in your class as well. Be sure it is a partial class named the exact same - also do not forget that it must be in the exact same namespace as your .edmx.




回答2:


You need to use MetaDataTypes models..

[MetadataType(typeof(ModelMD))]
public partial class Model
{
//This is for "extending" the EF generated model, saying what class is used for metadata, in your case DisplayName
}

public partial class ModelMD
{

    [Display(Name = "Model_Title", ResourceType = typeof(DataFieldLabels))]
    public string Titulo { get; set; }

    [Display(Name = "Model_Description", ResourceType = typeof(DataFieldLabels))]
    public string Descripcion { get; set; }
}

In the above example I'm using Resource Files to get the Fields display names... but you could use it in a more harcoded way :)

You should create a new file in another folder, let's say "ModelMD". That way, once the models are regenerated this file is kept unchanged.

Important: The ModelMD file should use the same Namespace that the original model. If you put the file in a different folder it defaults to another namespace.



来源:https://stackoverflow.com/questions/12610319/mvc-db-first-fix-display-name

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!