문제

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?

도움이 되었습니까?

해결책

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.

다른 팁

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top