实体框架6连接字符串问题

时间:2018-06-07 14:16:49

标签: c# entity-framework

我有一个C#ASP.NET MVC代码第一个项目,它可以连接到我的数据库。它具有在web.config文件中设置的连接字符串,并且似乎都很好。

<connectionStrings>
    <add name="HorstMFGContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|HorstMFG.mdf;Initial Catalog=aspnet-HorstMFG;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

现在我需要从需要基于WinForms的类库的不同应用程序连接到同一个数据库。我无法访问使用我的dll的程序的源代码,因为我的应用程序只是Autodesk Vault的插件。

有很多示例such as this one显示了如何在调用dll的应用程序中设置连接字符串,但这显然不适用于我的情况。

This link here似乎非常接近我需要的东西,但我还没有能够让它发挥作用。这是我的版本&#39;创建&#39;功能

public static HorstMFGEntities Create(string nameOrConnectionString)
        {
            var entityBuilder = new EntityConnectionStringBuilder();

            // use your ADO.NET connection string
            entityBuilder.ProviderConnectionString = nameOrConnectionString;

            // Set the Metadata location.
            entityBuilder.Metadata = @"res://*/HorstMFG.ssdl|res://*/HorstMFG.msl";


            return new HorstMFGEntities(entityBuilder.ConnectionString);
        }

以下是调用函数的行:

using (var db  = HorstMFGEntities.Create(@"data source=(localdb)\MSSQLLocalDB;attachdbfilename=C:\Users\lorne\source\repos\HorstMFG\HorstMFG\App_Data\HorstMFG.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"))
                {
                    foreach (string l in lineList3)
                    {
                       ....
                       ....

这是抛出异常的实际行。

// calculate material
                        Material mat = db.Materials.Where(m => m.StructuralCode == l.Split('\t')[6]).FirstOrDefault();

异常消息&#34;错误:不支持关键字:&#39;元数据&#39;。

任何帮助指出我正确方向的人都表示赞赏。感谢。

我根据第一条评论更新了我的代码,并添加了&#39;提供商&#39;我也错过了。

public static HorstMFGEntities Create(string nameOrConnectionString)
        {
            var entityBuilder = new EntityConnectionStringBuilder();

            // use your ADO.NET connection string
            entityBuilder.ProviderConnectionString = nameOrConnectionString;

            entityBuilder.Provider = "System.Data.SqlClient";

            // Set the Metadata location.
            entityBuilder.Metadata = @"res://*/HorstMFG.csdl|res://*/HorstMFG.ssdl|res://*/HorstMFG.msl";


            return new HorstMFGEntities(entityBuilder.ConnectionString);
        }

现在我收到错误&#34;错误:无法加载指定的资源。&#34;

我现在按照link you provided.中的说明进行操作我认为我必须越来越近,但我对元数据格式有点模糊。似乎有一部分在示例中被注释掉了。我用它替换了它:

entityBuilder.Metadata = "res://*/HorstMFG.csdl|res://*/HorstMFG.ssdl|res://*/HorstMFG.msl";

现在我收到错误:&#34;无法加载指定的元数据资源&#34;

我确认我引用的文件确实存在,它们位于我项目中的... \ obj \ Debug \ edmxResourcesToEmbed \文件夹中。我还改变了“构建动作”#39;对于&#39; HorstMFG.edmx&#39;对象来自&#39;无&#39;到嵌入式资源&#39;。这对任何事都没有帮助。

enter image description here

0 个答案:

没有答案