Картографирование NHibernate - PullRequest
0 голосов
/ 02 января 2011

Я оцениваю некоторые ORM для моего будущего проекта.Мне не нравится подход EF для моей конкретной цели, потому что у меня уже есть бизнес-объекты, которые я хочу сделать постоянными, и я хочу использовать как минимум одну СУБД, кроме SQL Server.Я провел некоторое исследование по OpenAccess ORM от Telerik.это выглядит очень мощно, но также очень сложно для изучения, и там документация несколько устарела, поскольку их примеры не работают для последней версии.Теперь я думаю попробовать NHibernate.Он выглядит великолепно, но, насколько мне известно, у него нет готового к работе поставщика LINQ, что является для меня огромным недостатком.Но я думаю, что могу жить без этого.

Теперь о вопросе.У меня в проекте несколько сборок, каждая из которых содержит разные бизнес-объекты.Я хочу сделать еще одну DAL-подобную сборку, которая будет обрабатывать все операции CRUD для всех бизнес-объектов, которые разбиты на разные сборки.Я знаю, что NHibernate нуждается в сопоставлениях xml, но в моей ситуации, в какую сборку (и) я должен встраивать файлы сопоставления xml, в сборку DAL или в каждую сборку, содержащую бизнес-объект?

Спасибо

Ответы [ 3 ]

2 голосов
/ 04 января 2011

В другом порядке я хочу добавить кое-что, что вам может пригодиться.nHibernate хранит отображения XML для классов, но, поскольку я не большой поклонник этой идеи, я решил поискать что-то, что позволило мне определить отображения в коде, ответом был простой проект под названием Свободное владение nHibernate .

В этом проекте вы можете определить свои отображения в файле классов, и все останется в виде кода C #, поэтому сначала устраняется проблема с встраиванием файлов XML.

Вы можете найти документацию по Fluent nHibernate, но основная идея будет выглядеть следующим образом:

public class CatMap : ClassMap<Cat>
{
  public CatMap()
  {
    Id(x => x.Id);
    Map(x => x.Name)
      .Length(16)
      .Not.Nullable();
    Map(x => x.Sex);
    References(x => x.Mate);
    HasMany(x => x.Kittens);
  }
}

Я надеюсь, что смогу помочь.

1 голос
/ 04 января 2011

В дополнение к упоминанию Дэвида о FluentNHibernate я хочу отметить, что NH3 имеет своего собственного поставщика LINQ , который в настоящее время достаточно зрел для большинства проектов.

Я использую FluentNHibernate и LINQ в своем текущем проекте и вполне доволен им. Вы можете скачать последнюю версию FluentNHibernate для NH3 по адресу http://fluentnhibernate.org/dls/v1.x/fluentnhibernate-NH3.0-binary-1.2.0.694.zip

1 голос
/ 02 января 2011

NHibernate 3.0 имеет новый API запросов, который называется 'Query Over', и он очень похож на LINQ.

Файлы отображения должны быть помещены в сборку, содержащую бизнес-логику.

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