|  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 | 
| Участник | Цитата: но откуда ноги растут и как почему выбрана именно такая реализация? понятно, что вряд ли мы узнаем точно. но ведь можно попытаться воссоздать ход рассуждений, аргументы. | 
|  | 
|  | 
| 
 |