Как я могу улучшить отображение объектов моего бизнес-уровня в базе данных? Настало ли время для O / R Mapper? - PullRequest
2 голосов
/ 02 сентября 2010

Когда я начал писать веб-приложения на asp.net, я начал с небольших проектов, в которых для доступа к базе данных к серверу MSSQL использовался преобразователь Linq-To-SQL.
После получения некоторого опыта я перешел на классический 3-й уровеньГрафический уровень, бизнес уровень, уровень данных.Единственная функция уровня данных состояла в том, чтобы предоставлять методы вставки / обновления / удаления без какой-либо логики и логики в форме методов выбора.

Со временем я понял, что было бы лучше не предоставлять классы базы данных дов GUI (заняло некоторое время, к сожалению).Я перешел на использование бизнес-классов в BL, которые используются для всех операций, выполняемых BL, и отображаются графическим интерфейсом в форме получения List из BL.
Большое преимущество заключается в том, что я могу предоставить дополнительные свойства, которые непредставлен самой базой данных.Однако я сделал это отображение внутри BL самостоятельно с помощью методов, которые отображали соответствующий класс BL в класс базы данных.

Полагаю, здесь пригодится O / R mapper?До сих пор я не осознал их цели, но думаю, что только что нашел ее.Я недавно попробовал использовать новую Entity Framework с .net framework 4, но я использую его только как Linq-To-SQL DataContext.

Есть ли способ автоматически выполнить сопоставление?Если да, то это что-то, что предоставляет новая Entity Framework, или мне нужно искать O / R Mapper, как NHibernate?

Ответы [ 4 ]

3 голосов
/ 02 сентября 2010

Я использую NHibernate исключительно в своих проектах.Мне нравится контроль и гибкость, которые он мне дает.Существует «ярлык» под названием Active Record , который использует NHibernate под обложками, но обеспечивает действительно хороший простой интерфейс к NHibernate.

NHibernate имеет крутой кривой обучения, но когда вы пройдетеэто - это действительно плавный ход.Когда (и если) вы решите пойти по пути NHibernate, посмотрите Ayende для получения крутых советов.

2 голосов
/ 02 сентября 2010

(Entity Framework - это O / R Mapper.)

Если вы серьезно относитесь к загрязнению своих рук с помощью ORM (но относительно нового для этой области), я настоятельно рекомендую что-то вроде видео TekPub на эти темы. Вы сможете увидеть эти инструменты в использовании, начиная с нуля. Это изящное введение в некоторые простые, но реальные проблемы, подобные тем, о которых вы упомянули.

0 голосов
/ 03 сентября 2010

LinqToSql - это ORM, поэтому вы уже используете его. Удаление LinqToSql и замена его на EntityFramework или NHibernate не решит проблем, которые у вас сейчас возникают.

Вот несколько вещей, о которых вы должны узнать больше, чтобы дать вам дополнительный контекст:

0 голосов
/ 03 сентября 2010

Я прекрасно провел время, используя Entity Framework 4.0 (+ CTP).Я думаю, вам было бы намного легче иметь дело с ORM.EF4 предоставляет все , необходимое для взаимодействия с MSSQL из C # /. NET.Вам не придется писать ни одной строки SQL, и он полностью поддерживает LINQ (через ObjectQuery).

...