Как справиться с поворотными POCO? - PullRequest
2 голосов
/ 12 апреля 2011

У меня есть POCO, основанный на нормализованной таблице.Мой вопрос заключается в том, как мне справиться с изменением этого не повернутого / нормализованного объекта на ненормализованный / повернутый объект?Нужно ли мне создавать еще одно POCO, которое является поворотной версией?Как с этим справиться?

Давайте представим, что нормализованный POCO определен как:

Таблица клиентов

CustomerId int
BestSeller bool
NumberOfOrders int

, и я хочу представить этоas

Таблица клиентов Pivot

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 Ответ

1 голос
/ 12 апреля 2011

Да, это новая сущность только для чтения, отображаемая в представление базы данных, определяющее сводный запрос, или, возможно, новый пользовательский объект, используемый в качестве материализованного результата пользовательского запроса SQL, выполняемого ExecuteStoreQuery, поскольку использование поворота в SQL-сервере намного проще и быстрее.

...