Как использовать AutoMapper с базой данных Entity Framework Первый подход

Я работаю над MVC 5, Entity Framework с подходом Db First. Всякий раз, когда я использую

public class Customer
{
    [Required]
    public virtual string CustomerID { get; set; }

    [Required]
    [StringLength(15)]
    public virtual string CompanyName { get; set; }

    public virtual string Address { get; set; }

    public virtual string City { get; set; }

    public virtual string PostalCode { get; set; }

    [Country(AllowCountry="USA")]
    public virtual string Country { get; set; }

    [Phone]
    public virtual string Phone { get; set; }
}

для проверки в сгенерированном классе Entity Framework, и если я обновлю свой файл .edmx, я потеряю весь код, который я написал. Кто-то предлагает мне использовать Auto-mapper. Я пытаюсь найти какой-нибудь базовый пример, но я не получил. Веди меня. Как начать и откуда? Я новичок в MVC, Entity Framework.


person ANJYR    schedule 24.10.2014    source источник
comment
Крис Пратт написал пару хороших статей здесь, это может помочь вам начать работу   -  person    schedule 24.10.2014
comment
Добавляйте аннотации к своим моделям представления, а не к сгенерированному коду, используйте automapper для передачи данных между ними.   -  person David Martin    schedule 24.10.2014


Ответы (1)


Существует еще один способ сохранить код атрибута проверки, даже если вы обновите модель. В папку Models добавьте класс с именем Metadata.cs (класс, содержащий все атрибуты проверки).

using System;
using System.ComponentModel.DataAnnotations;

namespace YourProjectName.Models
{
    public class CustomerMetadata
    {
        [Required]
        public virtual int CustomerId { get; set; }

        [Required]
        [StringLength(15)]
        public virtual string CompanyName { get; set; }

        
    }
}

Затем вы должны связать классы моделей с классами метаданных. Для этого в папке Models добавьте класс с именем PartialClasses.cs.

using System;
using System.ComponentModel.DataAnnotations;

namespace YourProjectName.Models
{
    [MetadataType(typeof(CustomerMetadata))]
    public partial class Customer
    {
    }
}

Источник

person IRSHAD    schedule 25.10.2014
comment
Хотя это может быть приемлемым, представления часто включают редактирование только подмножества данных моделей или потребуют дополнительных свойств (SelectLists для создания раскрывающихся списков и т. д.), поэтому создание модели представления и сопоставление с моделью данных, как правило, является лучшим подходом. - person ; 25.10.2014