如何处理旋转poco

本文关键字:旋转 poco 处理 何处理 | 更新日期: 2023-09-27 17:49:39

我有一个基于规范化表的POCO。我的问题是如何处理将这个非pivot/规范化对象更改为非规范化/pivot对象?我是否需要创建另一个POCO是旋转版本?一个人如何处理这种情况?

假设规范化POCO定义为: 客户表

CustomerId int
BestSeller bool
NumberOfOrders int

我想把它表示为

数据透视客户表

CustomerId int
BestSellerOrders int
NotBestSellerOrders int

这个可以,但我不确定我喜欢它:

public void UpdateCustomer(CustomerPivot customerPivot)
{
    using (var context = DataObjectFactory.CreateContext())
    {
        // find all the rows to update (2)
        var rowsToUpdate = context.Customer
            .Where(w => w.CustomerId == customerPivot.CustomerId).ToList();
        var first = rowsToUpdate.Where(w => w.BestSeller == true).SingleOrDefault();
        var second = rowsToUpdate.Where(w => w.BestSeller == false).SingleOrDefault();
        first.NumberOfOrders = (int)customerPivot.BestSellerOrders;
        second.NumberOfOrders = (int)customerPivot.NotBestSellerOrders;
        context.Customer.ApplyChanges(first);
        context.Customer.ApplyChanges(second);
        context.SaveChanges();
    }
}

如何处理旋转poco

是的,这是一个新的只读实体映射到定义pivot查询的数据库视图,或者可能是一个新的自定义对象,作为ExecuteStoreQuery执行的自定义SQL查询的实体化结果,因为在SQL server中使用pivot更容易和更快。