我有一个基于规范化表的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();
}
}
答案 0 :(得分:1)
是的,这是一个新的只读实体,映射到数据库视图,定义了数据透视查询,或者可能是新的自定义对象,用作ExecuteStoreQuery
执行的自定义SQL查询的具体化结果,因为在SQL服务器中使用数据透视更容易,更快。 / p>