【问题标题】:dynamic connection string with EF4, get metadata path is not valid带有 EF4 的动态连接字符串,获取元数据路径无效
【发布时间】:2011-11-21 06:44:09
【问题描述】:

这是我的问题。

我为我的实体框架上下文使用动态连接字符串。

//In Web Config

add key="DataSource" value="WIN-QBRH0MJL8IT\ISS" />


//In my EntityFactory.cs
 public static DBEntities GetEntity()
        {
            var scsb = new SqlConnectionStringBuilder();

            scsb.DataSource = ConfigurationManager.AppSettings["DataSource"];

            scsb.InitialCatalog = "db1";
            scsb.MultipleActiveResultSets = true;
            scsb.IntegratedSecurity = true;
            if (HttpContext.Current.Session["DBName"] == null)
            {
                HttpContext.Current.Response.Redirect("/Account/Step1");
            }
            else
            {
                scsb.InitialCatalog = HttpContext.Current.Session["DBName"].ToString();
            }

            var builder = new EntityConnectionStringBuilder();
            builder.Metadata = "metadata=~/bin/Models/DBModel.csdl|~/bin/Models/DBModel.ssdl|~/bin/Models/DBModel.msl";
            builder.Provider = "System.Data.SqlClient";
            builder.ProviderConnectionString = scsb.ConnectionString;
            DBEntities db = new DBEntities(builder.ConnectionString);
            return db;
        }

我知道问题出在这一行:

builder.Metadata = "元数据=~/bin/Models/DBModel.csdl|~/bin/Models/DBModel.ssdl|~/bin/Models/DBModel.msl";

我查了一下,csdl、ssdl、msl在/mvcinfosite/bin/Models/.csdl,.ssdl,.msl中

我的 edmx 的配置是:
元数据工件处理:复制到输出目录

这是完整的错误

指定的元数据路径无效。有效路径必须是 现有目录,扩展名为“.csdl”的现有文件, “.ssdl”或“.msl”或标识嵌入资源的 URI

谢谢

【问题讨论】:

    标签: asp.net-mvc-2 entity-framework-4


    【解决方案1】:

    尝试删除 ~ 字符并使用指向您的应用根目录的有效相对路径。我认为它无法使用在 ASP.NET 应用程序中使用的这个特殊字符。

    【讨论】:

      猜你喜欢
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      相关资源
      最近更新 更多