DAL Datamapper, сохраняющий жирные объекты - PullRequest
2 голосов
/ 27 октября 2010

Я переписываю наше приложение.Мы создаем DataMappers для работы в нашем DAL.Мой вопрос относится к ситуации, когда у меня есть сложный объект из BLL, который передается в DataMapper для сохранения.

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

т.е.поле, которое было обновлено в BLL.

Какая хорошая практика для сохранения этого в базе данных?

Вы бы сохранили всю структуру?или Как я могу структурировать это так, чтобы мой DataMapper знал, какие поля изменились, чтобы мне не пришлось обновлять всю структуру в базе данных?Я думаю, у меня могло бы быть какое-то поле IsDirty для каждого свойства, но это могло бы очень быстро запутаться.

Ответы [ 2 ]

1 голос
/ 27 октября 2010

Если вы сохраняете оригинальный объект в памяти и передаете новую «версию» с изменениями, вы можете проверить новый объект на наличие изменений и сохранить только.

public class CustomerMapper {
    // ...
    public void Update(Customer original, Customer update)
    {
        // check each property for changes
    }
    // ...
}

После обновления вы заменяете исходный объект новым. Но помните о проблемах параллелизма, если у вас несколько потоков.

0 голосов
/ 27 октября 2010

Зачем изобретать велосипед?Я сделал несколько слоев данных, и это не стоит хлопот.Все эти проблемы (и многие, о которых вы даже не задумывались) уже были учтены при использовании существующего ORM.

Мой любимый nhibernate .Он может дать вам много энергии или исправить все с почти нулевой конфигурацией.

Смотрите здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...