zoukankan      html  css  js  c++  java
  • 无法加载指定的元数据资料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文件拷贝到应用法度目次底下即可。呵呵(估计很多人这里失足!)
  • 相关阅读:
    自动化测试基础篇--Selenium文件上传send_keys
    自动化测试基础篇--Selenium中数据参数化之TXT
    自动化测试基础篇--Selenium中JS处理浏览器弹窗
    自动化测试基础篇--Selenium中JS处理滚动条
    自动化测试基础篇--Selenium单选框(Radio)复选框(CheckBox)
    自动化测试基础篇--Selenium弹出框alert
    自动化测试基础篇--Selenium select下拉框
    自动化测试基础篇--Selenium多窗口、句柄问题
    flask初探
    windows系统在python3.5环境下安装mysql组件
  • 原文地址:https://www.cnblogs.com/stragon/p/2724509.html
Copyright © 2011-2022 走看看