EntityConnection在创建连接实例时抛出异常

时间:2016-06-20 17:30:36

标签: entity-framework

如果我执行以下

,在我的EF项目中
using (EntityConnection con = new EntityConnection("name=HCMConnection"))

它抛出异常

在配置中找不到指定的命名连接, 不打算与EntityClient提供程序一起使用,或者无效。

连接字符串位于Web.Config中,它看起来像

<add name="HCMConnection" connectionString="Data Source=DEV-PROG-01;
     Initial Catalog=HCM;
     user id=HCMUser;
     password=*******;
     MultipleActiveResultSets=True"
     providerName="System.Data.SqlClient" />

我怀疑它与SqlClient提供程序不一样,不是吗?

感谢。

2 个答案:

答案 0 :(得分:0)

我相信你应该(用您的应用类型替换正确的设置类)。没有EntityConnection构造函数可以将连接字符串名称作为参数来使用。

using (EntityConnection con = new EntityConnection(SettingsClass.HCMConnection))

然而,让dbcontext管理连接而不是手动操作可能是个更好的主意,这个构造函数可以只接受连接名称。

using (MyDbContext con = new MyDbContext ("HCMConnection"))

在你的上下文类中更好

public MyDbContext()
        : base("HCMConnection")

答案 1 :(得分:0)

保 不清楚在我的情况下什么是SettingsClass,但我决定使用相同的上下文来使用它的连接:

public ActionResult Education(ModelHCMContainer model)
    {...

并执行以下

using (DbCommand cmd = model.Database.Connection.CreateCommand())
            {
                model.Database.Connection.Open();
                try
                {
                    cmd.CommandText = String.Concat("select ed.*,", ...
                        "order by ed.DateStart DESC");
                    using (var _reader = cmd.ExecuteReader())
                    {
                        using (ModelHCMContainer context = new ModelHCMContainer())
                        {
                            var records = ((IObjectContextAdapter)context).ObjectContext.Translate<HCMApplication.Models.POCO.Profile.HCMEducationPOCO>(_reader);
                            items = records.ToList();
                        }
                    }

                }
                finally
                {
                    model.Database.Connection.Close();
                }
            }

似乎工作正常。 感谢。