Как реализовать бизнес-логику на автоматически сгенерированных объектах в Microsoft MVC2? - PullRequest
0 голосов
/ 28 января 2011

Я новичок в MVC и пытаюсь выяснить, как реализовать бизнес-логику в автоматически сгенерированных сущностях в проекте MVC.

Я знаю, что если я создам свой собственный класс Model, я могу поместить [Required] и другие атрибуты в поля, но, похоже, нет возможности сделать это в файле .edmx.

Есть ли что-то, что я здесь упускаю?

Должен ли я создавать свои собственные классы, которые используют сущности и помещают туда логику? Кажется, у меня должен быть способ выполнять меньше работы.

Спасибо!

1 Ответ

2 голосов
/ 28 января 2011

Этого можно достичь, используя функциональность класса приятелей в .NET, реализованную специально по этой причине. После того как вы создали свои сущности в своем файле .ebmx, вы можете создать частичные классы для сопровождения ваших сущностей, которые определяют ваши бизнес-правила в «классе приятеля».

[MetadataType(typeof(ProductMetadata))]
public partial class Product {

    internal sealed class ProductMetadata {
        [DisplayName("Name")]
        [Required]
        public string Name { get; set; }

        [DispayName("Price")]
        [Required, Range(1,10000)]
        public decimal Price { get; set; }

        [DisplayName("Description")]
        public string Description { get; set; }
    }
}

В приведенном выше примере предположим, что у вас уже есть тип «Product», определенный в контексте вашего объекта, который имеет свойства «Name», «Price» и «Description». Поскольку тип класса собеседника, на который ссылается MetadataTypeAttribute , имеет совпадающие имена свойств, атрибуты, примененные к свойствам в классе собеседника, будут применяться к типу реализации.

Примечание: если в классе собеседника есть имена свойств, которые не соответствуют типу реализации, вы получите ошибку времени выполнения. Вам нужно только создать соответствующие свойства в классе собеседника для свойств, к которым вы хотите применить бизнес-правила; все свойства являются необязательными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...