如何处理旋转POCO?

时间:2011-04-11 21:26:04

标签: c# linq entity-framework-4 poco

我有一个基于规范化表的POCO。我的问题是如何处理将此非旋转/标准化对象更改为非标准化/旋转对象?我是否需要创建另一个旋转版本的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();
    }
}

1 个答案:

答案 0 :(得分:1)

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