Первое несоответствие кода Microsoft Lightswitch и Entity Framework - PullRequest
2 голосов
/ 11 марта 2012

Я начал исследовать Microsoft Lightswitch 2011 как возможное решение для разработки быстрых приложений "admin" для обновления различных баз данных - в первую очередь тех, которые содержат справочные таблицы или данные конфигурации для внутренних корпоративных веб-сайтов или приложений.

У меня естьвеб-сайт, который был разработан с использованием ASP.NET MVC.EF Code First был использован при построении слоя данных.Некоторые из отношений многие-ко-многим обрабатываются EF CF, создавая таблицу соединений с двумя полями, содержащими первичные ключи двух таблиц, участвующих в связи.Первичный ключ таблицы соединения - это комбинация двух полей.Например, сущность документа может иметь много категорий, а категория может состоять из множества документов.Создаются три таблицы: Документы, Категории и Категории документов.В DocumentCategories есть только два столбца: DocumentID и CategoryID.

Когда эта база данных присоединена к Lightswitch в качестве внешней базы данных, и для таблицы «Документы» (и отображаются связанные категории) создается экран подробных данных мастера.быть удаленным из связанной таблицы (таблицы соединений) и добавленной в нее, но не измененным.

Исследование показало, что Lightswitch требует, чтобы таблица соединения в отношении «многие ко многим» имела собственный первичный ключ, который не являетсяобъединение ключей связанных таблиц.Другими словами, таблица должна иметь формат: DocumentCategoryID, DocumentID, CategoryID.Если таблица соединений структурирована таким образом, становится возможным обновить записи в связанной таблице.

Я знаю, что могу обойти эту проблему, не обновляя записи, а просто удаляя и повторно добавляя их.Это не имеет большого значения, так как 1) Lightswitch делает это легко, и 2) в связанных данных обычно нет оптовых изменений.Хотя это идет вразрез с моими чувствами относительно того, «что правильно».

Таким образом, существует риск предоставления корма всем ненавистникам инструмента Microsoft, 1) это просто случай, когда Microsoft допустила ошибку и была непоследовательна илиздесь есть какая-то другая сила, и 2) есть ли способ «исправить» это без необходимости переделки моего приложения ASP.NET MVC, EF CF и изменения структуры базы данных?

1 Ответ

2 голосов
/ 12 марта 2012

1) LightSwitch работает. Да, есть «ненавистники», но потом были ненавистники, когда появились гвоздевые пистолеты (http://jhurst.blogspot.com/2011/01/nail-gun-or-hand-nail-your-roof-which.html). Конечный пользователь, который оплачивает наши услуги, потребует, чтобы мы использовали инструменты, которые могут снизить расходы на 90% +

2) Использование WCF RIA Services позволяет вам поместить слой между тем, что у вас происходит в слое данных, и LightSwitch (см .: http://lightswitchhelpwebsite.com/Blog/tabid/61/tagid/21/WCF-RIA-Service.aspx). Используйте «мастер источника данных» только тогда, когда он работает для вас. , Если это вызовет у вас какие-либо проблемы, то служба WCF RIA, на код которой у вас уйдет всего 5 минут, разрешит любую ситуацию, потому что вы можете перейти к процедурному коду для обработки любого преобразования, которое вам нужно.

...