如果我执行以下
,在我的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提供程序不一样,不是吗?
感谢。
答案 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();
}
}
似乎工作正常。 感谢。