EF 6 + DevArt Mysql连接器+ MONO

时间:2013-06-10 13:59:29

标签: mysql mono devart

这是我第一次在debian上部署.net。我的应用程序是使用Devart mysql连接器通过使用数据库第一种方法创建并在win 7 vs2012中测试,之后我开始在linux上部署它。我遇到了一堆障碍!我不在乎......有人可以帮忙吗?在此之前,我正在考虑购买devart mysql连接器prof版...这是我的堆栈

System.Data.Entity.Core.MetadataException: Unable to load the specified metadata resource.
at System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources (System.String assemblyName, System.String resourceName, ICollection`1 uriRegistry, System.Data.Entity.Core.Metadata.Edm.MetadataArtifactAssemblyResolver resolver) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeResource..ctor (System.String originalPath, System.String assemblyName, System.String resourceName, ICollection`1 uriRegistry, System.Data.Entity.Core.Metadata.Edm.MetadataArtifactAssemblyResolver resolver) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader (System.String path, ExtensionCheck extensionCheck, System.String validExtension, ICollection`1 uriRegistry, System.Data.Entity.Core.Metadata.Edm.MetadataArtifactAssemblyResolver resolver) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader.Create (System.String path, ExtensionCheck extensionCheck, System.String validExtension, ICollection`1 uriRegistry, System.Data.Entity.Core.Metadata.Edm.MetadataArtifactAssemblyResolver resolver) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader.Create (System.String path, ExtensionCheck extensionCheck, System.String validExtension, ICollection`1 uriRegistry) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Metadata.Edm.MetadataCache.SplitPaths (System.String paths) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Common.Utils.Memoizer`2+<>c__DisplayClass2[System.String,System.Collections.Generic.List`1[System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader]].<Evaluate>b__0 () [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Common.Utils.Memoizer`2+Result[System.String,System.Collections.Generic.List`1[System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader]].GetValue () [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Common.Utils.Memoizer`2[System.String,System.Collections.Generic.List`1[System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader]].Evaluate (System.String arg) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Metadata.Edm.MetadataCache.GetArtifactLoader (System.Data.Entity.Core.EntityClient.Internal.DbConnectionOptions effectiveConnectionOptions) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Metadata.Edm.MetadataCache.GetMetadataWorkspace (System.Data.Entity.Core.EntityClient.Internal.DbConnectionOptions effectiveConnectionOptions) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.EntityClient.EntityConnection.GetMetadataWorkspace () [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection () [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Objects.ObjectContext..ctor (System.Data.Entity.Core.EntityClient.EntityConnection connection, Boolean isConnectionConstructor, System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlanFactory objectQueryExecutionPlanFactory, System.Data.Entity.Core.Common.Internal.Materialization.Translator translator, System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory columnMapFactory) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Objects.ObjectContext..ctor (System.String connectionString) [0x00000] in <filename unknown>:0
at System.Data.Entity.Core.Objects.ObjectContext..ctor (System.String connectionString, System.String defaultContainerName) [0x00000] in <filename unknown>:0
at PararuLibrary.Databases.Mysql.PararuRuMysqlEntities..ctor () [0x00000] in /home/dotnetprojects/WebService1/PararuLibrary/Databases/Mysql/PararyEDM.Designer.cs:52
at PararuLibrary.Repositories.UserRepository..ctor () [0x00000] in /home/dotnetprojects/WebService1/PararuLibrary/Repositories/UserRepository.cs:24
at ConsoleTest.Program.Proceed () [0x00040] in /home/dotnetprojects/WebService1/ConsoleTest/Program.cs:28
at ConsoleTest.Program.Main (System.String[] args) [0x00001] in /home/dotnetprojects/WebService1/ConsoleTest/Program.cs:22

之后,我在以下连接字符串中应用了App.config中的更改:

<add name="PararuRuEntitiesCS" connectionString="metadata=res://*/Databases.Mysql.PararyEDM.csdl|res://*/Databases.Mysql.PararyEDM.ssdl|res://*/Databases.Mysql.PararyEDM.msl;provider=Devart.Data.MySql;provider connection string=&quot;User Id=root;Host=localhost;Database=pararu_ru;Persist Security Info=True&quot;" providerName="System.Data.EntityClient" />

为...

<add name="PararuRuEntitiesCS" connectionString="metadata=res://PararuLibrary/Databases.Mysql.PararyEDM.csdl|res://PararuLibrary/Databases.Mysql.PararyEDM.ssdl|res://PararuLibrary/Databases.Mysql.PararyEDM.msl;provider=Devart.Data.MySql;provider connection string=&quot;User Id=root;Host=localhost;Database=pararu_ru;Persist Security Info=True&quot;"
      providerName="System.Data.EntityClient" />

......我有这个......

System.NotImplementedException: The requested feature is not implemented.
  at System.Reflection.AssemblyName.ReferenceMatchesDefinition (System.Reflection.AssemblyName reference, System.Reflection.AssemblyName definition) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Metadata.Edm.DefaultAssemblyResolver.ResolveAssembly (System.Reflection.AssemblyName referenceName) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Metadata.Edm.DefaultAssemblyResolver.TryResolveAssemblyReference (System.Reflection.AssemblyName refernceName, System.Reflection.Assembly& assembly) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeResource.ResolveAssemblyName (System.String assemblyName, System.Data.Entity.Core.Metadata.Edm.MetadataArtifactAssemblyResolver resolver) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader (System.String path, ExtensionCheck extensionCheck, System.String validExtension, ICollection`1 uriRegistry, System.Data.Entity.Core.Metadata.Edm.MetadataArtifactAssemblyResolver resolver) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader.Create (System.String path, ExtensionCheck extensionCheck, System.String validExtension, ICollection`1 uriRegistry, System.Data.Entity.Core.Metadata.Edm.MetadataArtifactAssemblyResolver resolver) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader.Create (System.String path, ExtensionCheck extensionCheck, System.String validExtension, ICollection`1 uriRegistry) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Metadata.Edm.MetadataCache.SplitPaths (System.String paths) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Common.Utils.Memoizer`2+<>c__DisplayClass2[System.String,System.Collections.Generic.List`1[System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader]].<Evaluate>b__0 () [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Common.Utils.Memoizer`2+Result[System.String,System.Collections.Generic.List`1[System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader]].GetValue () [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Common.Utils.Memoizer`2[System.String,System.Collections.Generic.List`1[System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoader]].Evaluate (System.String arg) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Metadata.Edm.MetadataCache.GetArtifactLoader (System.Data.Entity.Core.EntityClient.Internal.DbConnectionOptions effectiveConnectionOptions) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Metadata.Edm.MetadataCache.GetMetadataWorkspace (System.Data.Entity.Core.EntityClient.Internal.DbConnectionOptions effectiveConnectionOptions) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.EntityClient.EntityConnection.GetMetadataWorkspace () [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Objects.ObjectContext.RetrieveMetadataWorkspaceFromConnection () [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Objects.ObjectContext..ctor (System.Data.Entity.Core.EntityClient.EntityConnection connection, Boolean isConnectionConstructor, System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlanFactory objectQueryExecutionPlanFactory, System.Data.Entity.Core.Common.Internal.Materialization.Translator translator, System.Data.Entity.Core.Query.InternalTrees.ColumnMapFactory columnMapFactory) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Objects.ObjectContext..ctor (System.String connectionString) [0x00000] in <filename unknown>:0
  at System.Data.Entity.Core.Objects.ObjectContext..ctor (System.String connectionString, System.String defaultContainerName) [0x00000] in <filename unknown>:0
  at PararuLibrary.Databases.Mysql.PararuRuMysqlEntities..ctor () [0x00000] in /home/dotnetprojects/WebService1/PararuLibrary/Databases/Mysql/PararyEDM.Designer.cs:52
  at PararuLibrary.Repositories.UserRepository..ctor () [0x00000] in /home/dotnetprojects/WebService1/PararuLibrary/Repositories/UserRepository.cs:24
  at ConsoleTest.Program.Proceed () [0x00040] in /home/dotnetprojects/WebService1/ConsoleTest/Program.cs:28
  at ConsoleTest.Program.Main (System.String[] args) [0x00001] in /home/dotnetprojects/WebService1/ConsoleTest/Program.cs:22

2 个答案:

答案 0 :(得分:-1)

它看起来像一个Mono bug。请尝试以下解决方法:将“元数据工件处理”模型属性值从“嵌入输出程序集”更改为“复制到输出目录”。保存模型,在Windows上重建项目以确保其正常工作,并在Mono上进行部署。

答案 1 :(得分:-1)

错误很明显:该方法未在Mono中实现。

Mono是一个开源项目。没有像你这样的人的贡献,它就无法不断发展。请考虑为该方法提供实现(不要查看MS源,因为它无效)。