Классы NHibernate как Контракты Данных

<%= link_to "Add to your favorites list",{:controller => 
            'favourite_companies', :action =>'create'}, 
            :company_id=>"#{@company.id}",   
            :company_name=>"#{@company.company_name}",
            :class=>"ui-button-text button_text"}  %>

попробуйте это

<%= link_to "Add to your favorites list", :controller => 
            'favourite_companies', :action =>'create', 
            :company_id=>"#{@company.id}",   
            :company_name=>"#{@company.company_name}",
            { :class=>"ui-button-text button_text" }  %>

Так как: класс должен быть в: html_options (ссылаясь на API)

link_to(body, url, html_options = {})
8
задан Aleksandar Vucetic 1 June 2009 в 13:00
поделиться

3 ответа

Наша команда только что провела несколько месяцев, обсуждая этот проект, так что у меня есть много ссылок, которыми я могу поделиться; -)

Краткий ответ: Вам «следует» преобразовать ваши классы NHibernate в модель предметной области.

Длинный ответ: Я думаю, что ответ на этот вопрос является принципиальным. Если вы когда-либо захотите иметь возможность взаимодействия, вам не следует не использовать наборы данных в качестве DTO ( Мне нравится сообщение Хансельмана об этом ). Я не говорю, что это никогда не бывает хорошей идеей; очевидно, что люди добились в этом успеха. Просто знайте, что вы срезаете углы, и это рискованное предложение.

Если у вас есть полный контроль над классами, в которые вы отправляете данные, вы могли бы построить хорошую модель предметной области и просто сопоставить данные NHibernate с этими классами. Скорее всего, у вас возникнут серьезные проблемы, поскольку IList <> (которому соответствует ) не сериализуем. Вам придется написать свой собственный сериализатор или использовать что-то вроде NetDataContractSerializer , но вы потеряете совместимость.

Вам нужно будет измерить объем работы, необходимой для создания некоторых классов-оболочек, и перевод между , но тогда у вас будет полная гибкость в том, как будет выглядеть ваша модель предметной области. Затем вы можете делать что-то (как это сделали мы), например, генерировать код для ваших карт и объектов NHibernate. Затем ваши контракты данных служат абстракцией от ваших данных, как и должно быть.

PS Возможно, вы захотите взглянуть на ADO.NET Data Services , который представляет собой RESTful способ раскрытия ваших данных, который на данном этапе

6
ответ дан 5 December 2019 в 21:21
поделиться

Вы бы не хотели напрямую открывать модель своей предметной области, а отображали бы домен на какое-то сообщение, когда оно попадает в границу процесса. Вы можете использовать NHibernate, чтобы выполнить работу по сопоставлению за вас. В этом случае у вас будет 2 сопоставления, одно для вашей модели домена, а другое для ваших легких сообщений.

1
ответ дан 5 December 2019 в 21:21
поделиться

У меня нет прямого опыта в этом. это, но я уже отправлял наборы данных через WCF, и это прекрасно работает. Я думаю, что вашей самой большой проблемой при использовании NHibernete в качестве объектов данных поверх WCF будет отсутствие взаимодействия (как и при использовании наборов данных). Не только клиент должен использовать .NET, он также должен использовать NHibernate. Это противоречит принципам SOA, но если вы знаете наверняка , что не будете повторно использовать этот компонент, тогда нет веских причин не делать этого.

По крайней мере, стоит попробовать.

0
ответ дан 5 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: