28.12.2016, 12:20 | #1 |
Участник
|
Как соотносятся AX Data Entity и Entity framework?
DAX dataentity: https://ax.help.dynamics.com/en/wiki...ies-home-page/
Entity framework: https://msdn.microsoft.com/en-us/lib...v=vs.113).aspx + https://ru.wikipedia.org/wiki/ADO.NET_Entity_Framework + http://metanit.com/sharp/entityframework/ У меня есть несколько соображений, но я, пожалуй, воздержусь пока. Вдруг кто-нибудь скажет неожиданное. основной вопрос: Как соотносятся AX Data Entity и Entity framework? дополнительный вопрос: правильно ли я понимаю, что аксапта и EF точно используют один и тот же диалект oData для общения друг с другом? есть ли другие совместные отношения? |
|
29.12.2016, 14:39 | #2 |
Участник
|
Entity framework - некий фрейворк с помощью которого можно прицепится к SQL и при этом не надо сами SQL запросы писать или думать про схему DB.
Например через LinqPad можно написать запрос и EF сам разбертся кого с кем join и что select. AX Data Entity - посути SQL вьюхи доступные через oData и с вкраплениями безнес логики. Как соотносятся? Если надо доступ к SQL table/view вывести через oData обычно используют EF. Основное преимущество - простота. Конечный результат будет очень похож на AX Data Entity. Минус auth, бизнес логика. Плюс больше возможностей, например в AX Data Entity больше 1000 записей не выбирает. Цитата:
дополнительный вопрос:
правильно ли я понимаю, что аксапта и EF точно используют один и тот же диалект oData для общения друг с другом? есть ли другие совместные отношения? Если сравнивать AX с oData v4, то AX не поддерживает стандартный contains и подменяет его самодельным eq '*searchTxt*'. Непонятно зачем так, но видимо есть и другие отличия. dynamics-ax-7-services-technical-concepts-guide
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
За это сообщение автора поблагодарили: mazzy (10). |
29.12.2016, 14:59 | #3 |
Участник
|
(оО)
это на практике раскопано или где-то написано? Цитата:
смотри, данные из data entity публикуются автоматом https://ax.help.dynamics.com/en/wiki...-7/#addressing если опустить вопросы авторизации, то можно ли предположить, что в аксаптовские data entity заранее заложена возможность работать с аксаптой из отдельно написанных маленьких приложений, которые используют Entity Framework? другими словами, аксаптовские формы и MorphX стал бы не нужен. Цитата:
Сообщение от Alex_KD
Если сравнивать AX с oData v4, то AX не поддерживает стандартный contains и подменяет его самодельным eq '*searchTxt*'. Непонятно зачем так, но видимо есть и другие отличия.
dynamics-ax-7-services-technical-concepts-guide и тоже не понимаю почему. можно ли предположить, что реализована возможность по стандартам предыдущих версий EF? |
|
29.12.2016, 16:25 | #4 |
Участник
|
По ссылке что я привел выше - "Server-driven paging - The maximum page size that is served is 1,000.". Вроде еще тикет на connect есть где народ жалуется )
Цитата:
собственно отсюда и вопрос
смотри, данные из data entity публикуются автоматом https://ax.help.dynamics.com/en/wiki...-7/#addressing Цитата:
если опустить вопросы авторизации,
то можно ли предположить, что в аксаптовские data entity заранее заложена возможность работать с аксаптой из отдельно написанных маленьких приложений, которые используют Entity Framework? другими словами, аксаптовские формы и MorphX стал бы не нужен. Представь если в AX данный можно изменить только через Data Entity. Клево, а? Написал логику 1 раз и пользуешь ее везде - начальные данные, миграция, стороние вендоры-интеграции, формочки, отчеты. Цитата:
можно ли предположить, что реализована возможность по стандартам предыдущих версий EF?
Повторю еще раз, EF и oData это не одно и тоже. С одной и той же версией EF можно сделать разные oData с разным поведением.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
29.12.2016, 17:53 | #5 |
Участник
|
Цитата:
И никаких проблем с RecID, никаких идиотских структур типа DirParty. Вместо понятия Relations - понятие Принадлежит. Ляпота. Программистская. Чего ж реализация то такая странная? Цитата:
И как раз предлагаю обсудить - а почему собственно? Какие могут быть рациональные причины для изобретения собственного велосипеда в Аксапте? Понятно, что "как всегда"... Но вдруг таки можно найти рациональное зерно? |
|
29.12.2016, 17:58 | #6 |
Участник
|
Цитата:
это артефакт odata. http://www.odata.org/getting-started/basic-tutorial/ обрати внимание на тег "@odata.nextLink" насколько я понимаю, по стандарту oData ответ дается порциями. в ответе будет ссылка на следующую порцию, если она есть. и размер страницы - это размер порции. разве не так? |
|
29.12.2016, 18:43 | #7 |
Участник
|
Цитата:
То есть сам EF ничего про ODATA не знает. |
|
29.12.2016, 18:50 | #8 |
Участник
|
Вот только контролы на формочках сейчас не могут редактировать энтити, насколько я знаю.
|
|
29.12.2016, 19:11 | #9 |
Участник
|
"Пинадлежит" концептуально одно из видов Relations. Просто в аксапте Relations не дотупны их запросов. Нельзя написать.
X++: select PurchaseOrder where exists(PurchaseOrder.markup.Code == 'x') && exists(PurchaseOrder.lines.markup.code == 'x'); |
|
29.12.2016, 19:15 | #10 |
Участник
|
Цитата:
|
|
29.12.2016, 19:31 | #11 |
Участник
|
вот ведь обломал... а у меня такая теория складывалась.
спасибо. да, внимательно посмотрел. да, EF работает с connection string и в конечном итоге использует класс-провайдер, который должен быть специально создан для EF. да, есть как сторонние решения, так и провайдер oData для SQL да, ты прав EF не заточен под oData изначально. и не содержит провайдера oData в поставке по умолчанию. надо подумать. спасибо. ======================= внезапно! среди провайдеров oData обнаружились:
надо подумать. |
|
29.12.2016, 19:32 | #12 |
Участник
|
Цитата:
Сообщение от belugin
Как ORM это vietnam of computer science так и создание бизнесобъектов это Вьетнам Аксапты. В итоге решили вырастить из того, что есть. Инкрементно. Добавить во view возможность обновления данных и постепенно наращивать возможности.
|
|
29.12.2016, 19:40 | #13 |
Участник
|
все это указатели )
но на практике программисты всевозможными путями пытаются избавиться от указателей в пользу ссылок. казалось бы - пустая смена терминологии. но в результате современные программные библиотеки навязывают стиль мышления "содержит", а не "указывает". объект "содержит" другой объект объект "принадлежит" другому объекту. хотя в реальной памяти конечно же работают указатели. так и relations - это указатели в области баз данных relations требуют суррогатных ключей. relations требуют внимания от программиста если же перейти на уровень "принадлежит", то получим структуры типа xml/json где никаких суррогатных ключей (указателей) не требуется. но зато такая абстракция "протекает", если объект может принадлежать нескольким объектам. что в программировании ссылок, что в программировании баз данных. примерно так. ========================== поэтому я и считаю, что переход с абстракции relation на следующий уровень абстракции "принадлежит" сильно упрощает программирование в большинстве случаев. но именно из-за "протекания" абстракции и вводят такое понятие как "бизнес-данные" |
|
29.12.2016, 20:36 | #14 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
29.12.2016, 20:48 | #15 |
Участник
|
Цитата:
Цитата:
Цитата:
Не требуют relation суррогатных ключей - открой морпхикс и простой рилейшен на любых ключах. Это ключи а не релейшены указатели. Это они требуют внимания программиста. Проблема аккаунты в том, что нельзя в запросах использовать рилейшены аи не ключи. Цитата:
если же перейти на уровень "принадлежит", то получим структуры типа xml/json
где никаких суррогатных ключей (указателей) не требуется. Последний раз редактировалось belugin; 29.12.2016 в 20:51. |
|
29.12.2016, 22:43 | #16 |
Участник
|
ну да, ну да... использует, наследует...
но со ссылками почти все превращается в семантику "содержит". кроме того, мы же находимся в контексте data entity. а в этом контексте даже навигационные свойства к внешним data entity превращаются в "принадлежит". я говорил в этом контексте. согласен с тем, что сформулировано коряво. над формулировкой нужно еще подумать. Цитата:
я говорил не о любых relation, а о сильно нормализованных таблицах. в которых связь технически нужно реализовать, но отражения на реальный мир эта связь не имеет. такие relation как правило реализуются суррогатными ключами. в аксапте это DimId, системная номерная серия и прочие для таких ключей в номерной серии безболезненно можно использовать & вместо # - пользователи этого не заметят. так вот, data entity полностью устраняют потребность в таких технических ключах. Цитата:
нужно генерить искуственные ключи, чтобы их можно было использовать как Foregn Key, и таким образом реализовать Relation в сильно нормализованных таблицах. да, сформулировано было коряво. надо подумать ну да, ну да - "если объект может принадлежать нескольким объектам". другими словами, граф, содержащий хотя бы один нетривиальный цикл. (не дерево) Последний раз редактировалось mazzy; 29.12.2016 в 22:49. |
|
29.12.2016, 22:54 | #17 |
Участник
|
Цитата:
Цитата:
в которых связь технически нужно реализовать, но отражения на реальный мир эта связь не имеет.
Цитата:
такие relation как правило реализуются суррогатными ключами.
в аксапте это DimId, системная номерная серия и прочие для таких ключей в номерной серии безболезненно можно использовать & вместо # - пользователи этого не заметят. так вот, data entity полностью устраняют потребность в таких технических relation. |
|
30.12.2016, 01:47 | #18 |
Участник
|
Цитата:
Сообщение от mazzy
Не-не-не-не.
это артефакт odata. http://www.odata.org/getting-started/basic-tutorial/ обрати внимание на тег "@odata.nextLink" насколько я понимаю, по стандарту oData ответ дается порциями. в ответе будет ссылка на следующую порцию, если она есть. и размер страницы - это размер порции. разве не так? oData + webAPI + EF - Более гибкая по сравнению с AX Data Entity. Вообще говоря EF для oData не требуется, его используют из-за удобства. Вот пример - WebAPI oData без EF (English) Таким же методом данные из ax 2012 выставляются наружу через oData.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
30.12.2016, 01:59 | #19 |
Участник
|
Насколько я понимаю в MS есть светлая мечта запихнуть данные в CDM и использовать PowerApp для доступа-изменений.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
30.12.2016, 09:02 | #20 |
Участник
|
Цитата:
но откуда ноги растут и как почему выбрана именно такая реализация? понятно, что вряд ли мы узнаем точно. но ведь можно попытаться воссоздать ход рассуждений, аргументы. |
|
|
|