无法加载指定的元数据资料Unable to load the specified metadata resource

在应用ADO.NET Entity Framework构建Application时呈现如下异常。Solution 中有2个项目,一个为Windows Form项目,另一个为Class Library 项目,包含ADO.NET Entity Data Model。Windows Form 项目增长对Class Library 项目标引用。
异常信息:
System.Data.MetadataException was unhandled
Message="Unable to load the specified metadata resource."
Source="System.Data.Entity"
StackTrace:
       at System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.LoadResources (String assemblyName, String resourceName, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
       at System.Data.Metadata.Edm.MetadataArtifactLoaderCompositeResource.CreateResourceLoader(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
       at System.Data.Metadata.Edm.MetadataArtifactLoader.Create(String path, ExtensionCheck extensionCheck, String validExtension, ICollection`1 uriRegistry, MetadataArtifactAssemblyResolver resolver)
       at System.Data.EntityClient.EntityConnection.SplitPaths(String paths)
       at System.Data.EntityClient.EntityConnection.GetMetadataWorkspace(Boolean initializeAllCollections)
       at System.Data.EntityClient.EntityConnection.InitializeMetadata(DbConnection newConnection, DbConnection originalConnection, Boolean closeOriginalConnectionOnFailure)
       at System.Data.EntityClient.EntityConnection.Open()
在Windows Form 项目中呈现异常的代码:
            string customerID = txtCustomerID.Text.Trim();
            // Contains a reference to an Entity Data Model (EDM) and a data source connection.
            usingEntityConnection cn = new EntityConnection"Name=NorthwindEntities"))
            {
                cn.Open();
                EntityCommand cmd = cn.CreateCommand();
                cmd.CommandText =
                     "SELECT VALUE c FROM NorthwindEntities.Customers "+
                     "AS c WHERE c.CustomerID = @customerID";
                cmd.Parameters.AddWithValue("customerID", customerID);
                DbDataReader rdr = cmd.uteReader(CommandBehavior.SequentialAccess);
                while (rdr.Read())
                    Console.WriteLine(rdr["CompanyName"].ToString());
                rdr.Close();
            }
上述代码行 cn.Open(); 抛出异常Exception - Unable to load the specified metadata resource。经搜检,题目呈如今App.config 设备文件(该设备文件在应用ADO.NET Entity Data Model领导时主动添加),
ADO.NET Entity Data Model领导主动添加的Connection String:
< configuration >
< connectionStrings >
    < add name = "NorthwindEntities" connectionString="metadata=res://*/NorthwindDB.csdl|res://*/NorthwindDB.ssdl|res://*/NorthwindDB.msl; provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=True&quot;"providerName="System.Data.EntityClient" />
</ connectionStrings >
</ configuration >
须要将上方connectionStrings 设备节中的* 批改为Class Library 项目标Assembly Name。批改后的示例App.config 如下:
< configuration >
< connectionStrings >
    < add name = "NorthwindEntities" connectionString=" metadata= res://NorthwindEDM/NorthwindModel.csdl|res://NorthwindEDM/NorthwindModel.ssdl|res://NorthwindEDM/NorthwindModel.msl; provider=System.Data.SqlClient;provider connection string=&quot;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True;MultipleActiveResultSets=True&quot;"providerName="System.Data.EntityClient" />
</ connectionStrings >
</ configuration
    The problem sometimes occurs with the Entity Framework where it gives an array of errors when doing simple operations. For example, I received an error about not being able to &#8220;unable to load the specified metadata resource&#8221;. Uh, the connection string information is right in the config file! The problem often can be resolved simply by:
  1. open the EDMX file in the designer mode
  2. go to the properties of the EDMX
  3. set the Metadata Artifact Processing property to &#8220;Copy to Output&#8221;
  4. build the project
  5. 然后从输出目次将*.msl.*.ssdl,*.csdl文件拷贝到应用法度目次底下即可。呵呵(估计很多人这里失足!)

你可能感兴趣的:(resource)