Я начал исследовать 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 и изменения структуры базы данных?