Хранимые процедуры для удаления с помощью Fluent nHibernate - PullRequest
1 голос
/ 14 февраля 2011

Я просматривал некоторые другие посты по этой теме, но большинство, похоже, имеет дело с избранными.У меня есть хранимая процедура, которая выполняет несколько удалений и проверок и просто принимает в качестве аргумента одно целое и возвращает бит для успеха.Я хочу запустить это из своего кода, используя свободный nHibernate от острой архитектуры.

Есть идеи, как лучше всего с этим справиться?Спасибо

1 Ответ

2 голосов
/ 14 февраля 2011

Вы не можете отобразить хранимые процедуры с FluentNHibernate (AFAIK).Вам необходимо сопоставление xml, подобное этому (SQL-Server):

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Your.Xml.Mappings.Namespace">
  <sql-query name="DeleteSomeEntity" >
    exec dbo.deleteSomeEntityProc ?
  </sql-query>
</hibernate-mapping>

Возвращаемое значение, вероятно, будет ArrayList из object[], если вы вызовете его с помощью NHibernate.Обратите внимание на «?»аргумент, который будет принимать ваш идентификатор.Имя для вызова будет «DeleteSomeEntity». Также помните, что вам нужно будет назвать файл с условным обозначением «.hbm.xml», и вам необходимо включить его в качестве встроенного ресурса в ваш проект!

Чтобы FluentNHibernate мог загрузить файл, вам нужно вызвать

database = database.Mappings(m => m.HbmMappings.AddFromAssembly(assembly));

в сборке, вызывая xml при инициализации ваших сопоставлений.

Когда вам действительно нужновозвращаемый тип сопоставления, вы можете включить в отображение объявление <return> или <return-property>.Я не сделал этого, однако, вам придется искать это в справочном руководстве NHibernate.

HTH.

...