У меня есть модель EDMX с сгенерированным контекстом.Теперь я сгенерировал библиотеку Self Tracking Entities, которая является отдельным проектом, и ссылался на это из модели EDMX.Также установите правильное пространство имен в контексте для того же пространства имен, что и для сущностей.
Теперь с этим работает все, кроме случаев, когда я пытаюсь создать службу данных WCF с этим контекстом.
Так что простосоздать новый ObjectContext и работать с ним напрямую работает нормально.
Но, сославшись на контекст + модель lib и сущности lib, я получаю следующую ошибку при загрузке службы
Сервер обнаружил ошибку при обработкезапрос.Сообщение об исключении: 'Value cannot be null. Parameter name: key'. See server logs for more details. The exception stack trace is:
Теперь я обнаружил, что это может произойти при использовании службы данных с внешней сущностью lib, и исправление переопределяет createcontext
с кодом
Свернуть
System.Data.Metadata.Edm.ItemCollection itemCollection;
if (!context.MetadataWorkspace.TryGetItemCollection
(System.Data.Metadata.Edm.DataSpace.CSSpace, out itemCollection))
{
var tracestring = context.CreateQuery<ClientDataStoreContainer>("ClientDataStoreContainer.DataSet").ToTraceString();
}
return context;
Теперь ошибка ушла, но я получаю следующее: Object mapping could not be found for Type with identity 'ClientDataStoreEntities.Data'.
Эта ошибка возникает на .toTraceString
в createcontext
ssdl-файл имеет определенный типСвернуть
<EntitySetMapping Name="DataSet">
<EntityTypeMapping TypeName="IsTypeOf(ClientDataStoreEntities.Data)">
Таким образом, он должен загрузить тип ClientDataStoreEntities.Data, который является пространством имен и типом библиотеки STE, которую я сгенерировал из модели.
РЕДАКТИРОВАТЬ : с
var tracestring = context.CreateQuery<Data>("ClientDataStoreContainer.DataSet").ToTraceString();
Кажется, что загружаются все типы, однако теперь у службы нет методов, которые я могу вызвать.должно быть 2 DataSet и ОпубликованныйDataSet, но:
<service xml:base="http://localhost:1377/WcfDataService1.svc/">
−
<workspace>
<atom:title>Default</atom:title>
</workspace>
</service>
- это то, что я получаю.