Хранение функций внутри модели - PullRequest
0 голосов
/ 24 апреля 2019

Давайте предположим, что у меня есть класс Offer, который:

public class Offer
{
    [Key]
    public int ID { get; set; }
    //...
    public virtual List<OfferEventManager> EventManagers { get; set; }
    public virtual List<EventDay> EventDays { get; set; }
    public virtual List<OfferStatus> OfferStatuses { get; set; }
    public virtual List<EstimatedCost> EstimatedCosts { get; set; }
    public virtual List<Payment> Payments { get; set; }
}

И я должен сделать некоторую проверку, например, кто-то хочет отправить Offer клиенту, но сначала Offer должно быть указано OfferStatus, например EventDays и EstimatedCost.Теперь давайте предположим, что мне придется проверять это не только в одной функции, но и в некоторых других, поэтому мне нужно знать, какой самый последний OfferStatus и т. Д. Должен ли я хранить функцию внутри модели, например GetLatestStatus() икакие-то другие функции или модели должны иметь только те свойства, которые хранятся в БД?Если я не могу хранить функции внутри, то каков наилучший способ написания некоторых полезных функций, которые я могу использовать с Offer, полученными из вызова БД?

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

Вы можете добавить метод в свой класс модели по частичному классу public partial class Offer

Можно узнать больше на Использование частичных классов в Entity Framework с пользовательскими свойствами

Чтолучший способ написать некоторые полезные функции, которые я могу использовать с предложением, полученным из вызова БД?

Вы должны следовать шаблону репозитория

enter image description here

Дополнительная ссылка на https://www.c -sharpcorner.com / article / creation-web-api-with-repository-pattern-and-зависимость-инъекция /

Entity Framework4 / POCO - с чего начать?

1 голос
/ 24 апреля 2019

Как правило, модели в EF должны быть прямыми моделями базы данных (возможно, с некоторыми виртуальными отображениями).

Я не совсем уверен, что ваш вопрос (или что вы хотите), но если все, что вы хотите, это самый последний статус, вы можете сделать это:

// assume that 'offer' is an Offer from the DB 
var latestStatus = offer.OfferStatuses.OrderByDescending(x => x.Timestamp).First();

Вы можете добавить "геттер" на модель следующим образом:

public class Offer
{
    // Getter method
    public OfferStatus GetLatestStatus
    {
        get { return OfferStatuses.OrderByDescending(x => x.Timestamp).FirstOrDefault(); }
        set { ; }
    }  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...