powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ORM с требованиями
53 сообщений из 53, показаны все 3 страниц
ORM с требованиями
    #36807190
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня, коллеги) Меня вот интересует вопрос, есть ли ORM удовлетворяющая следующим требованиям:
1. Отсутствие сессий, работа с сущностями по принципу (ProductRepository.Insert(product) /Update(product). т.е. во первых: вся каскадность ложится на плечи репозитория а не задается в маппинге. во вторых: Все изменения в базу данных обозначаются в явном виде.
2. Самодостаточность (Нет необходимости вручную писать запросы к БД). Т.е. генерация SQL
3. Открытый исходный код, или хотя бы возможность его купить (очень не маловажная деталь).

Т.е. вообще я представляю себе идеальную ORM как гибрид датасета с NHibernate. от NHibernate оставить критерии и идею маппинга (так чтоб небыло необходимости наследоваться от каких-то классов). А принцип сохранения и загрузки аля DataSet.

Ваше мнение?
...
Рейтинг: 0 / 0
ORM с требованиями
    #36807298
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkitВаше мнение?
Мое мнение трудно составить, т.к. трудно сразу так понять требования. Они, честно говоря, сумбурные.
Но на ассоциативном уровне мне представляется, что Вам бы подошла не ОРМ а чисто объектная СУБД. Например CACHE или Versant. Последняя из них (Versant FastObjects) красиво интегрирована с Visual Studio. Достаточно поставить классу атрибут [Persistent], как он начинает "жить" в БД.
И тут Вам не придется утомлять себя даже конструкциями типа "ProductRepository.Insert(product)". Просто исполните "new Product()" и объект тут же попадет в БД.
Но вот про открытость исходных кодов я не уверен...
...
Рейтинг: 0 / 0
ORM с требованиями
    #36807634
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkit,

Моё мнение: описанные требования - голубая, но несбыточная мечта программиста.

Про NHibernate:

1. Причин, по которым появились сессии несколько (хотя бы Identity map и Lazy load), и от них никуда не деться. Но вы можете закрывать сессию сразу по завершении своего запроса. Каскадность: Как по вашему должна определяться "глубина каскадирования"? А то ведь автоматом можно всю базу удалить.

2. Необходимости писать запросы нет, но иногда это бывает полезно.

3. Очень даже открытый.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36808334
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkitА принцип сохранения и загрузки аля DataSet.
Нахрена?
...
Рейтинг: 0 / 0
ORM с требованиями
    #36809103
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУsibkitА принцип сохранения и загрузки аля DataSet.
Нахрена?

Это даст возможность в ручную определять что сохранять, а что удалять и как. Не гоняя циклом сущности в интерцепторе.

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

С полезностью писать запросы самому я не соглашусь. Т.к. анализируя последние месяцы работы понимаю, что написал бы их уже миллион (И это самый большой минус датасета кстати). Nhibernate-вские критерии позволяют очень просто генерировать запросы при этом довольно качественно. (Хочу тут похвастоваться, что исправил баг в исходниках NHibernate, не позволяющий использовать одну таблицу в одном запросе несколько раз :)).

Объектные СУБД не устраивают в плане того, что не всегда приходится всё делать с нуля и очень часто попадаются проекты под уже спроектированную и заполненную базу данных.

Собственно NHibernate это то в чем я сейчас, и уже достаточно давно работаю, но у него есть большие минусы.
Во первых: Я не понимаю как масштабировать проект с его использованием (Думаю, что никак). Т.е. когда библиотека DAO с маппингом и всем вытекающим не одна (Пример: Компания ведет деятельность по разным направлениям, соответственно касса одна, менеджеры одни, клиенты одни, а вот логика CRM систем совершенно разная) Было бы идеально реализовать возможность дополнения маппингом уже существующие библиотеки.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36809120
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во вторых: NHibernate очень не прозрачно отслеживать все изменения. Гораздо удобнее делать Update(entity), чем Flush().
В третьих: к NHibernate приходится писать много костылей, он очень мощный, но куда не капни поглубже везде есть грабли свои (Например сейчас столкнулся с проблемой абстрактных классов - загружаю объект абстрактного класса, а он прокси и приходится педальным способом выяснять что это за объект)


Собственно к чему я завел эту тему. Буквально пол года назад мне кто-то сказал, что пишет свою ORM - тогда я над ним посмеялся. А сейчас поработав и полностью проникнувшись двумя технологиями у меня уже накопилось достаточно идей, как можно собрать самое лучшее из DataSet и NHibernate. Просто очень не хочется изобретать велосипед.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36809269
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkit
Это даст возможность в ручную определять что сохранять, а что удалять и как. Не гоняя циклом сущности в интерцепторе.

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


Бывают случаи, когда хибер не применим (или плохо применим). К примеру, обновлять 100 000 записей будет мучительно долго. Но я бы повнимательнее посмотрел на ваша архитектуру, может в ней проблема.

sibkit
С полезностью писать запросы самому я не соглашусь. Т.к. анализируя последние месяцы работы понимаю, что написал бы их уже миллион (И это самый большой минус датасета кстати).


Иногда такие случаи бывают, когда проще решить именно запросом. Ясное дело для банальных CRUD Nhibernate гораздо удобнее.

sibkit
Собственно NHibernate это то в чем я сейчас, и уже достаточно давно работаю, но у него есть большие минусы.
Во первых: Я не понимаю как масштабировать проект с его использованием (Думаю, что никак). Т.е. когда библиотека DAO с маппингом и всем вытекающим не одна (Пример: Компания ведет деятельность по разным направлениям, соответственно касса одна, менеджеры одни, клиенты одни, а вот логика CRM систем совершенно разная) Было бы идеально реализовать возможность дополнения маппингом уже существующие библиотеки.

Что вы понимаете под масштабированием?
Что мешает замапить существующие библиотеки?

sibkit
Во вторых: NHibernate очень не прозрачно отслеживать все изменения. Гораздо удобнее делать Update(entity), чем Flush().
В третьих: к NHibernate приходится писать много костылей, он очень мощный, но куда не капни поглубже везде есть грабли свои (Например сейчас столкнулся с проблемой абстрактных классов - загружаю объект абстрактного класса, а он прокси и приходится педальным способом выяснять что это за объект)

Что мешает делать Session.SaveOrUpdate()?
Зачем выяснять настоящий тип абстрактного класса? Вы про SOLID принципы слышали?

sibkit
Собственно к чему я завел эту тему. Буквально пол года назад мне кто-то сказал, что пишет свою ORM - тогда я над ним посмеялся. А сейчас поработав и полностью проникнувшись двумя технологиями у меня уже накопилось достаточно идей, как можно собрать самое лучшее из DataSet и NHibernate. Просто очень не хочется изобретать велосипед.


Давайте. Всласть поработав над своим маппером, поймёте, почему nhibernate такой, какой он есть.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36809412
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SolYUtorsibkit
Это даст возможность в ручную определять что сохранять, а что удалять и как. Не гоняя циклом сущности в интерцепторе.

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


Бывают случаи, когда хибер не применим (или плохо применим). К примеру, обновлять 100 000 записей будет мучительно долго. Но я бы повнимательнее посмотрел на ваша архитектуру, может в ней проблема.


Проблема не в скорости, а в том что в некоторых ситуациях необходимо каскадно удалять дочерние объекты, а в некоторых нет - это логика такая и к архитектуе отношения не имеет.

SolYUtor
sibkit
С полезностью писать запросы самому я не соглашусь. Т.к. анализируя последние месяцы работы понимаю, что написал бы их уже миллион (И это самый большой минус датасета кстати).


Иногда такие случаи бывают, когда проще решить именно запросом. Ясное дело для банальных CRUD Nhibernate гораздо удобнее.


Проще не значит лучше, принципиально не пишу вручную запросы, за исключением вызова хранимых процедур и получения данных из неразмапленных таблиц. И критериями можно разрулить далеко не банальные вещи.

SolYUtor
sibkit
Собственно NHibernate это то в чем я сейчас, и уже достаточно давно работаю, но у него есть большие минусы.
Во первых: Я не понимаю как масштабировать проект с его использованием (Думаю, что никак). Т.е. когда библиотека DAO с маппингом и всем вытекающим не одна (Пример: Компания ведет деятельность по разным направлениям, соответственно касса одна, менеджеры одни, клиенты одни, а вот логика CRM систем совершенно разная) Было бы идеально реализовать возможность дополнения маппингом уже существующие библиотеки.

Что вы понимаете под масштабированием?
Что мешает замапить существующие библиотеки?


Что касается "масштабирования" - здесь я возможно не правильно выразился. Имеется ввиду наращивание функционала всей системы в целом (включающей несколько проектов), без изменения работающих проектов и с возможностью использовать существующий код (в виде dll библиотек)

SolYUtor
sibkit
Во вторых: NHibernate очень не прозрачно отслеживать все изменения. Гораздо удобнее делать Update(entity), чем Flush().
В третьих: к NHibernate приходится писать много костылей, он очень мощный, но куда не капни поглубже везде есть грабли свои (Например сейчас столкнулся с проблемой абстрактных классов - загружаю объект абстрактного класса, а он прокси и приходится педальным способом выяснять что это за объект)

Что мешает делать Session.SaveOrUpdate()?
Зачем выяснять настоящий тип абстрактного класса? Вы про SOLID принципы слышали?

Причем здесь SaveOrUpdate? Если сущность в сессии, то при флаше изменения в ней сохраняются в базу. независимо от того делался ей Session.SaveOrUpdate или Session.Update. Читайте теорию.

Что касается абстрактных классов, то требуется не просто выяснить тип, а дозагрузить этот класс. Сейчас я это делаю вот таким вот костылем:
if (line.Subject.SubjectTypeIndex==1)
{
CalculationRecurciveSubject cps = session.Get<CalculationRecurciveSubject>(line.Subject.Id);
}
возможно, это оттого, что у меня не самая последняя версия, но тем не менее, приходится вставлять костыли. А вот ваш вопрос "Зачем выяснять настоящий тип абстрактного класса?" считаю глупым.

SolYUtor
sibkit
Собственно к чему я завел эту тему. Буквально пол года назад мне кто-то сказал, что пишет свою ORM - тогда я над ним посмеялся. А сейчас поработав и полностью проникнувшись двумя технологиями у меня уже накопилось достаточно идей, как можно собрать самое лучшее из DataSet и NHibernate. Просто очень не хочется изобретать велосипед.


Давайте. Всласть поработав над своим маппером, поймёте, почему nhibernate такой, какой он есть.
Прекрасно представляю объем работы который придется совершить. Nhibernate далеко не совершенен.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36809776
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkit
Прекрасно представляю объем работы который придется совершить. Nhibernate далеко не совершенен.

Вот было бы здорово, если б Вы сделали свою систему ОРМ без использования ADO.NET, а круче!
А то меня не оставляет чувство досады по поводу того, что если б я делал проект на хорошо изученном и проверенном опытом ADO.NET, то давно бы успешно его сдал, причем лучшего качества, чем на Nhibernate, который все равно является "оберткой" для ADO.NET.

"Nhibernate далеко не совершенен" - это еще мягко сказано!
Я так и не приручил его к ораклу в полной мере.
Еще удручают заявления типа: "Опытные пользователи Nhibernate избегают композитных первичных ключей".
Какого, спрашивается, они их избегают, если композитные первичные ключи вытекают из логики предметной области?!! Где это видано, чтобы структуру данных адаптировали под инструмент доступа к ней?
...
Рейтинг: 0 / 0
ORM с требованиями
    #36809825
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль, на этапе проектирования схемы данных никто не запрещает прикрутить первичный ключ, вместо накладывания композитов. Весьма правильная практика, удовлетворяющая второй нормальной форме БД .

P.S. А, вообще, тема ниачём.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36809934
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУКурдль, на этапе проектирования схемы данных никто не запрещает прикрутить первичный ключ, вместо накладывания композитов. Весьма правильная практика, удовлетворяющая второй нормальной форме БД .

Здесь 2 заявления.
1. "на этапе проектирования схемы данных никто не запрещает прикрутить первичный ключ".
Да, сам Э.Кодд бы этого не запретил. Но суррогатный первичный ключ, получается, не нужен никому, кроме NHibernate.
2. "Весьма правильная практика, удовлетворяющая второй нормальной форме БД ". А почему не удовлетворяющая третьей? И кто сказал, что она правильная? Проектировщики БД пыхтят над идеальным отображением предметной области в БД не ради удобства ОРМ и даже разработчиков ППО. Их задача - создать такую структуру, которая бы не позволила никому, включая упомянутых разработчиков, нарушить логику взаимосвязи между данными. И их не касается, что там за ОРМ на "другом конце провода".
Кроме того, не все проекты начинаются с чистого листа. Многим приходится работать с уже спроектированной структурой БД, в которой композитные ПК никому не мешали.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810026
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльДа, сам Э.Кодд бы этого не запретил. Но суррогатный первичный ключ, получается, не нужен никому, кроме NHibernate.
Да никто ничего не запрещает, увольте. Я говорю про вариант решения, причём правильный вариант.

КурдльА почему не удовлетворяющая третьей?
Потому что:

2НФТаблица находится во второй нормальной форме, если она находится в первой нормальной форме, и при этом любой её атрибут , не входящий в состав возможного ключа, функционально полно зависит от каждого возможного ключа .

КурдльИ кто сказал, что она правильная?
Карло Заниоло с Бойсом-Коддом.

КурдльПроектировщики БД пыхтят над идеальным отображением предметной области в БД не ради удобства ОРМ и даже разработчиков ППО. Их задача - создать такую структуру, которая бы не позволила никому, включая упомянутых разработчиков, нарушить логику взаимосвязи между данными.
Каким образом введение первичного ключа (кластерного индекса) может нарушить логику взаимосвязи между данными?

КурдльИ их не касается, что там за ОРМ на "другом конце провода".
Причём тут ORM? Речь о схеме данных.

КурдльКроме того, не все проекты начинаются с чистого листа. Многим приходится работать с уже спроектированной структурой БД, в которой композитные ПК никому не мешали.
Именно поэтому я изначально сказал:
МСУКурдль, на этапе проектирования схемы данных никто не запрещает прикрутить первичный ключ ...
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810099
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
Каким образом введение первичного ключа (кластерного индекса) может нарушить логику взаимосвязи между данными?
Никаким. А я этого и не утверждал. Я говорил, что они и создадут структуру без суррогатных ключей. А потом придем мы и их, как Вы сказали, - вкорячим? Прикрутим?

"Каким образом бетонная плита в багажнике автомобиля может нарушить логику его работы?"
Логику - никаким. Исправную работу на расчетных параметрах - может.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810186
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУP.S. А, вообще, тема ниачём.
Тема о том, чтобы заменить NHibernate на что-то более управляемое и логически связанное. Вообще когда создавал, надеялся получить описание решения описанных проблем, например, в других мапперах, (т.к. сам все не изучишь - да и смысла нету). Но, возможно уже есть решение, которое мне подойдет - это был бы идеальный вариант.

Что касается идеи по поводу создания своего маппера: Я не ставлю перед собой цели создать что-то грандиозно громоздкое, наподобие NHibernate или EF. Вообще есть вот такие мысли:
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810223
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Данные хранятся в объектах, которые создаются вручную.
2. Объекты лишены коллекций связанных сущностей (соответственно и лэйзи отпадает). Для получения связей можно использовать например аналог constrain в DataSet.
3. Есть реализация критерий, т.е. объектное представление запроса в БД не привязанное к именам конкретных таблиц, а завязанное исключительно на маппинге.

Вот собственно и всё. Иными словами это датасет, только привязанный к критериям по имени классов и с классами вместо строк (что позволяет делать рефакторинг).
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810238
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльА потом придем мы и их, как Вы сказали, - вкорячим? Прикрутим?
Вы читать умеете или только учитесь
МСУна этапе проектирования схемы данных никто не запрещает прикрутить первичный ключ ...
?

Курдль"Каким образом бетонная плита в багажнике автомобиля может нарушить логику его работы?"
Ещё как нарушит. Большие нагрузки на двигатель и на раму. Первичный ключ вызывает большие нагрузки на БД?

КурдльЛогику - никаким. Исправную работу на расчетных параметрах - может.
Вот тут поподробнее.

sibkitТема о том, чтобы заменить NHibernate на что-то более управляемое и логически связанное.
Я не вижу в хибере что-то неуправляемое и несвязанное логически. В любой ORM есть свои достоинства и недостатки. Одних - устраивает, других - нет. Во-вторых, никогда не поздно начать писать SQL-запросы вручную.

sibkitЧто касается идеи по поводу создания своего маппера: Я не ставлю перед собой цели создать что-то грандиозно громоздкое, наподобие NHibernate или EF. Вообще есть вот такие мысли:
Больше времени потеряете, чем пользы будет.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810244
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkitДля получения связей можно использовать например аналог constrain в DataSet.

DataRelation, а не "constrain"
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810373
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КурдльDataRelation, а не "constrain"
Да, верно DataRelation, а еще как вариант динамически создаваемые связи, чтоб в коде выглядело типа:
DataStorage ds;
Order order;

IRelation relation = new Relation<Order,OrderItem>("Id","OrderId");
IList<OrderItem> items = ds.Load(order,relation);
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810476
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkit,

есть у нас такое, никакого маппинга и т.д., но БД проектировать надо в самой системе :)
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810478
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУЯ не вижу в хибере что-то неуправляемое и несвязанное логически. В любой ORM есть свои достоинства и недостатки. Одних - устраивает, других - нет. Во-вторых, никогда не поздно начать писать SQL-запросы вручную.

При всем уважении к NHibernate (я только на нем работаю с 2007-го) Было написано очень много всяческих костылей к нему, саморучно исправлены баги и изучен он мной просто вдоль и поперек. При этом вспоминая работу с ADO.NET вспомнил всю гибкость, при построении бизнес логики и удовольствие от полного контроля загрузки и сохранения данных. ИМХО лэйзи загрузки это такой напантованный механизм, который при первом взгляде красив и чертовски удобен, а при разработке сложных проектов становится непосильной ношей - у меня половина времени разработки уходит на отслеживание и проверки где там что загрузилось как сохранилось. + так или иначе NHibernate тянет лишние данные из базы. А при сложной структуре данных работа с ним превращается в какой-то ад.

МСУБольше времени потеряете, чем пользы будет.
Пользу сложно переоценить. Естественно, что тут, человеко-месяцем разработки не отделаешься, даже для самой примитивной реализации. И очень бы хотелось найти что-нибудь уже готовое (помоему раз четвертый это уже повторяю :)) Но когда на кону стоят проекты в 1000 человеко-месяцев, думаю 10-20 из них целесообразно выделить на разработку механизма, позволяющего прозрачно и гибко работать с данными.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810493
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRossibkit,

есть у нас такое, никакого маппинга и т.д., но БД проектировать надо в самой системе :)
А что это такое? можно подробнее?
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810512
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRossibkit,

есть у нас такое, никакого маппинга и т.д., но БД проектировать надо в самой системе :)
из описания типов, макротипов, классификаторов, макроклассификаторов,... генерируется пользовательский интерфейс (который может изменить пользовател с соттветсивующими правами),
в интерфейс выводятся методы соответствующих типов, макротипов, классификаторов, макроклассификаторов, имеются стандартные методы применимые ко всем примитивам, всякие там пейджинги, лейзи загрузки и т.д, автоматическое обновление БД с разными режимами и т.д.
Основные функции для прогера - ЗагрузитьТип, ЗагрузитьМакротип, ЗагрузитьТипПоССылке, СоздатьИнтерфейс и т.д.
Прогер пишет только методы, где их искать задается в описании типов, макротипов, классификаторов, макроклассификаторов. Есть встроенный редактор кода для написания методов. вот вкраце.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810536
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

Сахаватушка, Вы опять гавноскрины свои постите?
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810558
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

отдохни ка чуток, вон сколько тем вокруг
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810577
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkitViPRossibkit,

есть у нас такое, никакого маппинга и т.д., но БД проектировать надо в самой системе :)
А что это такое? можно подробнее?
Прога такая ВИПРОС, но платформа отдельно не продается пока. :(
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810582
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУViPRos,

Сахаватушка, Вы опять гавноскрины свои постите?
вообще, интересно, почему ГОВНОскрины? почему ты так считаешь?
(может, хоть какой пользы от тебя будет :))
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810609
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos,

Муть какая-то! А при чем тут ORM? И зачем мне генерирование пользовательских интерфейсов? Думаю вы путаете мягкое с теплым. Или вообще не читали о чем здесь идет речь
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810630
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosМСУViPRos,

Сахаватушка, Вы опять гавноскрины свои постите?
вообще, интересно, почему ГОВНОскрины? почему ты так считаешь?
(может, хоть какой пользы от тебя будет :))

Вы бы свой сайт до ума довели что-ли. Тормозит нипадеццки.
Во-вторых, гавноскрины - ибо опять оффтопите. Ваш говнософт никоим образом не коррелирует с сабжем.
У Вас там в Долгопрудном все такие долгие?
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810804
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

не знаю почему сайт не доделывают
долгопрудный один из проектов
...
Рейтинг: 0 / 0
ORM с требованиями
    #36810809
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkitViPRos,

Муть какая-то! А при чем тут ORM? И зачем мне генерирование пользовательских интерфейсов? Думаю вы путаете мягкое с теплым. Или вообще не читали о чем здесь идет речь
ну ОРМ какой вы хотели там встроен, потому и писал
...
Рейтинг: 0 / 0
ORM с требованиями
    #36812006
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRosну ОРМ какой вы хотели там встроен, потому и писал

Только она отдельно не продается и уж об исходниках вообще говорить не приходится. Идите занимайтесь рекламой в другом месте, терпеть не могу, когда так делают.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36813006
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkit,

никто ничего не рекламирет, а куски которые вас интересуют можно было обсудить
там всего-то несколько сотен строк
...
Рейтинг: 0 / 0
ORM с требованиями
    #36814278
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRossibkit,

никто ничего не рекламирет, а куски которые вас интересуют можно было обсудить
там всего-то несколько сотен строк

То, что мне надо, в несколько сотен строк кода не может уложиться. Как минимум надо сделать реализацию диалекта, хотя бы для одной СУБД (Это уже несколько сотен строк кода) + механизмы трансляции объектного запроса (аналог ICriteria в хибернэйте - и тут малой кровью не обойтись). По моим предварительным оценкам это около 3-4 человекомесяцв. Это при том, что всё максимально просто. Главное, чтобы это была работоспособная и действительно полезная система.
Окончательное решение еще не принято. Но Nhibernate уже реально усложняет жизнь (Сегодня реализовывали механизм клонирования графа сущностей для пересохранения в БД - вот сейчас анализирую - в Датасете это пол часа делов, с хибернэйтом же приходится изрядно поизвращаться тут и клонирование через сериализацию и инициализация индивидуальная для каждого типа элемента.
Моё мнение: Хибернэйт отличная штука, но только не для очень больших и не наделенной сложной логикой проектов. Когда приходилось разрабатывать web приложения, как сейчас помню - Nhibernate был просто идеальным инструментом.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36814410
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkit,

сами говорите что с датасетом легко синхронизировать БД, тогда нафига прямой маппинг к БД?
либо напрямую работать с датасетом, либо маппить к датасету, благо LINQ имеется в наличии, а датасет дает больше возможностей для построения сложных целостных структур и навигации (благодаря релейшнам)
а БД и датасет(по мере нужды) генерировать автоматом из метаданных (оттуда и интерфейс автоматом)
...
Рейтинг: 0 / 0
ORM с требованиями
    #36814418
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там только этот граф и интересен, но по моему есть много готового
...
Рейтинг: 0 / 0
ORM с требованиями
    #36814455
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos,

Я тя умоляю, ну не надо постить сюда скриншоты. Лучше расскажи как устроена ваша ORM и продаете ли вы сместе с исходниками? Если нет, то и рассказывать ничего не надо. Не надо больше скриншотов
...
Рейтинг: 0 / 0
ORM с требованиями
    #36814463
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRossibkit,

сами говорите что с датасетом легко синхронизировать БД, тогда нафига прямой маппинг к БД?
либо напрямую работать с датасетом, либо маппить к датасету, благо LINQ имеется в наличии, а датасет дает больше возможностей для построения сложных целостных структур и навигации (благодаря релейшнам)
а БД и датасет(по мере нужды) генерировать автоматом из метаданных (оттуда и интерфейс автоматом)

Прямой маппинг - что бы не таскать названия таблиц по всему проекту, чтобы можно было безболезненно проводить рефакторинг базы данных.
А что у вас за проект я не совсем представляю, что-то наподобие ацесса?
Ручная работа с БД имеет место быть в любом случае, без хранимых процедур иногда просто не обойтись. Как у вас с этим?
...
Рейтинг: 0 / 0
ORM с требованиями
    #36814620
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkitбез хранимых процедур иногда просто не обойтись.

А мне, пожалуйста, расскажите, какой в них смысл?!! Я считаю, что без триггеров сложно обойтись - они являются элементом поддержки целостности данных и логики предметной области. Но на кой черт нужны ХП?!!
...
Рейтинг: 0 / 0
ORM с требованиями
    #36814675
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Курдльsibkitбез хранимых процедур иногда просто не обойтись.

А мне, пожалуйста, расскажите, какой в них смысл?!! Я считаю, что без триггеров сложно обойтись - они являются элементом поддержки целостности данных и логики предметной области. Но на кой черт нужны ХП?!!

Когда требуется обработать большое количество данных и тянуть их на клиента нецелесообразно.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36814687
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну а вообще я сам стараюсь избегать их использования. Везде где можно без них - делаю без них. Бизнес логика в БД - это дурной тон
...
Рейтинг: 0 / 0
ORM с требованиями
    #36814693
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkitКогда требуется обработать большое количество данных и тянуть их на клиента нецелесообразно.
А какое в наш век серьезное приложение (обрабатывающее большое количество данных) обходится без сервера приложений? Вот на нем и реализовывать обработку! Здесь и масштабируемость.
В общем-то можно было бы и не гнушаться серверной логикой на СУБД, если б не приходилось держать отдельных специалистов для этого...
...
Рейтинг: 0 / 0
ORM с требованиями
    #36814941
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльА мне, пожалуйста, расскажите, какой в них смысл?!! Я считаю, что без триггеров сложно обойтись - они являются элементом поддержки целостности данных и логики предметной области. Но на кой черт нужны ХП?!!
Умеючи, с их помощью можно приготовить промежуточный слой, который наиболее оптимально будет решать многие проблемы системы - начиная с прав доступа и заканчивая быстродействием (достаточно гибкая прокладка, которая сглаживает шероховатости как одной стороны так и другой)
...
Рейтинг: 0 / 0
ORM с требованиями
    #36815075
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkitБизнес логика в БД - это дурной тон
Угу, когда-то (на заре ООП) считалось дурным тоном смешивать данные и процедуры их обрабатывающие в одном объекте ;)
...
Рейтинг: 0 / 0
ORM с требованиями
    #36815176
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LR,

Да, подтверждаю - дурной тон!
Корпоративные БД масштаба предприятия, как правило, живут гораздо дольше, чем их клиентское ППО. Если структура БД максимально приближена к строению и взаимосвязям сущностей предметной области - она и не потребует изменений, пока предметная область не изменится.
А вот требования к обработке этих данных постоянно меняются. БД обрастает все новыми "клиентами", имеющими новые потребности. Если каждый раз под каждую такую потребность создавать элементы серверной логики в СУБД - автоматизированная система станет неподъемным монстром. При этом хоть некоторые СУБД и имеют поддержку ЯП высокого уровня, все равно программируются на старых добрых процедурных языках типа PL/SQL или T-SQL. Такие конструкции сложны для документирования, поддержки и реверс инжиниринга. Боязнь нарушить давно забытую логику некоторых ХП и оправданное стремление к унификации доступа, заставляют разработчиков новых приложений для обращения к БД использовать все те же ХП, хотя многие современные технологии справились бы корректнее и быстрее.
Я приводил свой пример - Nhibernate не поддерживает ХП оракла с параметрами, а деваться некуда - заказчик требует унифицированного обращения к данным.
...
Рейтинг: 0 / 0
ORM с требованиями
    #36815218
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
undefinedsibkit
Прямой маппинг - что бы не таскать названия таблиц по всему проекту, чтобы можно было безболезненно проводить рефакторинг базы данных.
А что у вас за проект я не совсем представляю, что-то наподобие ацесса?
Ручная работа с БД имеет место быть в любом случае, без хранимых процедур иногда просто не обойтись. Как у вас с этим?
А че тебя скриншоты то волнуют, если на скл.ру нет места то модератор удалить ненужное.
И если бы т увидел, например этот скриншот, описывающий методы та, то увидел бы, что скл батч и ХП может быть методом.
Рефакторинг БД при изменении метаданных проводится автоматом, для клиентов предусмотрен полный и выборочный импорт експорт метамодели и метаданных. При изменении данные клиента не теряются (типа слияния конфгураций в 1С, токо не надо ничего вручную делать).
Для каждого примитива предусмтрены несколько имен - прогерский, интерфейсный(пользователь сам может переименовать), в БД. Внешние изменения БД контролируются (можно и запретить для МССКЛ).

Введено понятие "подобие структур", что подразумевает метаструктуру, от которого наслдуются "подобные", типа дженерик дл структур. Алгоритмы пишутся для дженерик, "подобные" структурысодржать в описании метаданных отличия от инварианта. Этим решается несколько проблем, вв том независимость от имен примитивов в "подобных структурах".
Конечно если в методе использовано джененрик имя и то имя изменена или удалена то приходится с этим возиться. :( В планах автоматический рефакторинг кода для этого случая.

Пока не продаем. Я лично за то, щоб выложить бесплатно, но идут споры...
...
Рейтинг: 0 / 0
ORM с требованиями
    #36815220
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльДа, подтверждаю - дурной тон!
Корпоративные БД масштаба предприятия, как правило, живут гораздо дольше, чем их клиентское ППО.
Курдльа деваться некуда - заказчик требует унифицированного обращения к данным.

Имхо, дурной тон - пытаться решать "политические" проблемы "техническими" средствами...
...
Рейтинг: 0 / 0
ORM с требованиями
    #36815221
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а скрин то забыл :):):)
...
Рейтинг: 0 / 0
ORM с требованиями
    #36815811
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos,

Скриншоты эти сбивают с мысли и никакой полезной информации в себе не несут, если бы ты UML диаграммы постил - это бы было куда интресней, а вовсе не потому что я пекусь об скл.ру.

Так а эта система, подразумевает использование всей бизнес модели непосредственно в ней? и можно ли её прикрутить к существующей базе данных? На первый взгляд выглядит интересно, но интуиция мне подсказывает, что этотолько на первый взгляд
...
Рейтинг: 0 / 0
ORM с требованиями
    #36816090
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkit,

Да, она сама интерпретирет и исполняет модель.
БД можно использовать, но скорее всего надо будет рефакторить. Сейчас не допускается денормализация и обязателен суррогатный ключ гуидный. :(
...
Рейтинг: 0 / 0
ORM с требованиями
    #36816095
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRossibkit,

обязателен суррогатный ключ гуидный. :(

ВАШУ Ж МАШУ!!! Красота-то какая!!!
...
Рейтинг: 0 / 0
ORM с требованиями
    #36816323
sibkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRossibkit,

Да, она сама интерпретирет и исполняет модель.
БД можно использовать, но скорее всего надо будет рефакторить.

Ёптиль моптиль, ну это сильно ограничивает её применение. ИМХО, только для чего-то типа справочников. Вот у меня сейчас сразу такой элементарный пример: Есть, например, заявка и менеджер. У заявки есть состояние и есть ссылка на менеджера. Так вот, в зависимости от состояния заявки (Зарегестрирована, Обрабатывается, отменена), изменения в нее может вносить либо один (на которого ссылка) либо все менеджеры. Как это можно разрулить?
...
Рейтинг: 0 / 0
ORM с требованиями
    #36816434
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sibkit[quot ViPRos]sibkit,

Ёптиль моптиль, ну это сильно ограничивает её применение. ИМХО, только для чего-то типа справочников. Вот у меня сейчас сразу такой элементарный пример: Есть, например, заявка и менеджер. У заявки есть состояние и есть ссылка на менеджера. Так вот, в зависимости от состояния заявки (Зарегестрирована, Обрабатывается, отменена), изменения в нее может вносить либо один (на которого ссылка) либо все менеджеры. Как это можно разрулить?

Вариантов несколько.
Столбовой-рекомендуемый вариант - создать в классификаторе типов для типа "Заявка" подтипы в зависимости от количество статусов, каждому подтипу дать права доступа нужным пользователя-ролям (при этом они не увидят документов с другими статусами вообще).
Вариант 2 - обусловить право изменения записи (типа , статус in "1,2,5"
Вариант 3 - написать обработчик события(перед,после изменения), там анализировать права.
Вариант 4 - написать метод как в Вариант 3 и вывести в интерфейс (типа "Изменить статус")
да мало ли какие способы можно придумать, ведь вы можете написать все что хотите
...
Рейтинг: 0 / 0
ORM с требованиями
    #36816439
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а самое простое, наверное, написать check констрейнт "Менеджер in {} and Статус in {}"
...
Рейтинг: 0 / 0
53 сообщений из 53, показаны все 3 страниц
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / ORM с требованиями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]