MetadataException : строка подключения

Я понимаю, что этот вопрос задавался и решался здесь много раз, и что есть много полезных сообщений, таких как этот... http://blogs.teamb.com/craigsuntz/2010/08/13/38628/ Но, к сожалению, ни одно из предложений не сработало для меня, поэтому я публикую в надежде, что кто-то заметит что-то, чего я не видел.

У меня есть проект базы данных Sp_CodeGenerator — я подключился к базе данных. Моя строка подключения

<add name="AdWorksLTEntities" connectionString="metadata=res://*/Sp_CodeGenerator.Model1.csdl|res://*/Sp_CodeGenerator.Model1.ssdl|res://*/Sp_CodeGenerator.Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=EIRCOM;Initial Catalog=AdventureWorksLT2008R2;Integrated Security=True;MultipleActiveResultSets=True;Application Name=EntityFramework&quot;" providerName="System.Data.EntityClient"/>

Я попытался заменить //*/Sp_CodeGenerator.Model... именем dll //Sp_CodeGenerator/Sp_CodeGenerator.Model.csdl и т. д., но это не сработало.

Я также удалил все ссылки в файле .config, удалил файл .edmx и файлы шаблонов, сгенерированные Entity Frameworks, и запускал их много раз, но это не работает.

В своей структуре каталогов я вижу, что файлы edmx: Model1.csdl, Model1.msl, Model1.ssdl размещены в папке с именем edmxResourcesToEmbed, и их можно найти в C:\Sp_CodeGenerator\Sp_CodeGenerator\obj\x86.

Таким образом, полный путь: C:\Sp_CodeGenerator\Sp_CodeGenerator\obj\x86\Debug\edmxResourcesToEmbed.

Я не уверен, что это совпадение, но как только проблема появилась, я также заметил, что у меня есть несколько сообщений, когда я открываю файл .config об отсутствующих схемах для элемента 'entityFramework' 'defaultconnectionFactory' 'type' и т.д. и т.д.

Любые предложения о том, где искать дальше, с благодарностью.

Полная трассировка стека для MetadataException:

  at System.Data.Metadata.Edm.MetadataArtifactLoaderResource.LoadResource()
  at System.Data.Metadata.Edm.MetadataArtifactLoaderResource.CreateReader()
  at System.Data.Metadata.Edm.MetadataArtifactLoaderResource.CreateReaders(DataSpace        spaceToGet)
   at System.Data.Metadata.Edm.MetadataArtifactLoaderComposite.CreateReaders(DataSpace  spaceToGet)
   at System.Data.Metadata.Edm.MetadataCache.EdmMetadataEntry.LoadEdmItemCollection(MetadataArtifactLoader loader)
   at System.Data.Metadata.Edm.MetadataCache.EdmItemCollectionLoader.LoadItemCollection(EdmMetadataEntry entry)
  at System.Data.Metadata.Edm.MetadataCache.LoadItemCollection[T](IItemCollectionLoader`1 itemCollectionLoader, T entry)
  at System.Data.Metadata.Edm.MetadataCache.GetOrCreateEdmItemCollection(String cacheKey, MetadataArtifactLoader loader, Object& entryToken)
  at System.Data.EntityClient.EntityConnection.LoadEdmItemCollection(MetadataWorkspace workspace, MetadataArtifactLoader artifactLoader)
  at System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(Boolean initializeAllCollections)
  at System.Data.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection()
  at System.Data.Objects.ObjectContext..ctor(EntityConnection connection, Boolean isConnectionConstructor)
  at System.Data.Objects.ObjectContext..ctor(EntityConnection connection)
  at System.Data.Entity.Internal.InternalConnection.CreateObjectContextFromConnectionModel()
  at System.Data.Entity.Internal.LazyInternalConnection.CreateObjectContextFromConnectionModel()
  at System.Data.Entity.Internal.LazyInternalContext.InitializeContext()
  at System.Data.Entity.Internal.InternalContext.Initialize()
  at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
  at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
  at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
  at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
  at System.Linq.Queryable.OrderBy[TSource,TKey](IQueryable`1 source, Expression`1 keySelector)
  at Sp_CodeGenerator.SelectAll.SelectAll_Method() in    C:\Sp_CodeGenerator\Sp_CodeGenerator\Templates\dbo.SelectAll.StoredProcedure.sql.xml.cs:line 14
  at Sp_CodeGenerator.Program.Main(String[] args) in C:\Sp_CodeGenerator\Sp_CodeGenerator\Program.cs:line 15
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
  at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
  at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
  at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
  at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
  at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
  at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
  at System.Threading.ThreadHelper.ThreadStart()

person Linda Keating    schedule 31.01.2013    source источник


Ответы (1)


Я нашел решение - мне просто нужно было удалить Sp_CodeGenerator. от каждой модели Model1 в строке подключения. Не совсем уверен, почему строка подключения была сгенерирована именно так? Может быть, что-то делать с моей структурой каталогов?

person Linda Keating    schedule 31.01.2013