Можно ли иметь несколько edmx Entity Framework с общей строкой соединения? - PullRequest
1 голос
/ 07 декабря 2009

Моя концепция заключается в том, чтобы иметь файл edmx регистрации / аудита с соответствующими отображенными типами, определенными в одном проекте. Этот edmx имеет такие понятия и классы, как AuditTrail и PropertyChange

Второй edmx для реальных моделей приложений, домен, если хотите, с классами, такими как Product, Category и Order.

Что я хочу сделать, так это "выкопать" первый файл аудита edmx во второй домен edmx. Информация о схеме на 100% одинакова, в базе данных есть таблицы из обоих.

Я хочу, чтобы эти два файла edmx были объединены таким образом, чтобы я мог использовать транзакцию для сохранения данных, так как оба они зависят от завершения друг друга. Мои данные аудита не могут быть сохранены без информации о моем домене и наоборот.

Я бегал вокруг, и это кажется возможным, я просто упускаю некоторые детали реализации, которые не сводят это вместе.

Это должно быть так же просто, как указать строку подключения edxm домена и объектного контекста к проверяемым файлам edmx csdl, ssdl и msl? Цель состоит в том, чтобы загрузить всю информацию MetaData в одном экземпляре ObjectContext, чтобы я мог заключить вызов обоих в транзакцию.

Это то, что у меня есть в строке подключения для веб-приложения / домена этого приложения:

                      connectionString="metadata=res://*/Models.CfarModels.csdl|
                                                 res://*/Models.CfarModels.ssdl|
                                                 res://*/Models.CfarModels.msl|
                                                 W:\map\AuditModels.csdl|
                                                 W:\map\AuditModels.ssdl|
                                                 W:\map\AuditModels.msl;

Я на правильном пути, вот это невозможно?

1 Ответ

3 голосов
/ 07 декабря 2009

Хотя можно загрузить несколько файлов CSDL в одно (Entity) соединение, невозможно загрузить несколько файлов MSL или SSDL, поскольку они полностью автономны.

Возвращаясь к CSDL, в CSDL редко используется элемент <using>. Это может создать впечатление, что это похоже на Reference в .NET, но на самом деле это больше похоже на Merge.

т.е. один CSDL в другом фактически изменяет оба, объединяя их вместе и потенциально лишает законной силы MSL и SSDL, делая их неполными.

Итак, вернемся к вашему сценарию:

Теоретически вы можете иметь 2 CSDL: 1) Описать виды аудита 2) Использует (1) и определяет типы доменов и определяет EntitySets и AssociationSets для обоих типов типов.

Затем у вас будет один файл сопоставления для сопоставления (2) и файл модели хранилища.

Что оставило бы вас с чем-то вроде этого:

"metadata=res://*/Models.CfarModels.csdl|
          res://*/Models.CfarModels.ssdl|
          res://*/Models.CfarModels.msl|
          W:\map\AuditModel.csdl;

Лично, хотя я не думаю, что вы извлекаете достаточную выгоду из этого разделения, чтобы сделать его целесообразным, большая часть метаданных в любом случае находится в экстентах, отображении и модели хранения, поэтому повторное использование типа в то время как значение nice составляет всего около 20%. работы все равно.

Все, что вы действительно можете использовать повторно, это определения типов аудита, но это, вероятно, не стоит усилий.

Надеюсь, это поможет

Алекс Джеймс

Microsoft.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...