让我们假设我有一个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
等是什么。我是否应该在Model中存储一个函数,例如GetLatestStatus()
和其他一些函数或模型应仅具有存储在DB中的属性?如果我无法在内部存储函数,那么编写一些可以与DB调用中的Offer
一起使用的有用函数的最佳方法是什么?
答案 0 :(得分:1)
通常,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 { ; }
}
}
答案 1 :(得分:1)
您可以通过部分类public partial class Offer
在模型类中添加方法
可以在Using partial-classes in Entity Framework with custom properties
阅读更多内容编写一些有用的函数的最佳方法是什么,我可以将这些函数与通过数据库调用获得的Offer一起使用?
您应遵循存储库模式