我创建了一个应用程序,该程序从机床读取一些变量并将其上载到本地SQL Server。有两种可能在哪里运行应用程序
在我的app.config中,我有2个连接字符串:
<connectionStrings>
<!--<add name="Entities" connectionString="metadata=res://*/TosEntityModel.csdl|res://*/TosEntityModel.ssdl|res://*/TosEntityModel.msl;provider=System.Data.SqlClient;provider connection string="data source=WIN-652OQC8T8TT;initial catalog=TOSVariableDatabase.MDF;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />-->
<add name="Entities" connectionString="metadata=res://*/TosEntityModel.csdl|res://*/TosEntityModel.ssdl|res://*/TosEntityModel.msl;provider=System.Data.SqlClient;provider connection string="data source=WINDOWS-47TIMHV\SQLEXPRESS;initial catalog=TOSVariableDatabase;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient"/>
</connectionStrings>
因此,如果要在机床上运行我的应用程序,请注释第一个连接字符串,然后使用第二个连接字符串构建应用程序-之后,将其上传到机床上,然后运行即可。 如果要在PC上运行它,请注释第二个连接字符串,取消注释第一个连接字符串,然后重新生成,然后在PC上运行即可。
但是我想启动我的应用程序,然后才选择/更改连接-无需重建等。
所以我尝试了几件事:
首先,我尝试构建here之类的连接字符串,然后使用此新的连接字符串创建上下文的新实例。我将此添加到context的构造函数中:
public Entities(string sConnectionString)
: base(sConnectionString)
{
}
然后我使用以下字符串创建上下文的新实例:
dataManager.context = new Entities(entityBuilder.ConnectionString);
它给我抛出错误:
底层提供程序在打开时失败
和
命名管道提供程序错误40
我试图修复它(重新启动服务MSSQLSERVER等),但没有帮助。
其次,我尝试使用此topic(静态方法ChangeDatabase)中的解决方案,但对我而言不起作用(当我使用不同的初始目录和数据源运行此方法时,没有任何改变)。
那么,您能帮我吗?也许我的情况有一些更简单的解决方案?
别对我投掷石头-我在编程方面还是一个新手,尤其是在Entity Framework中。
答案 0 :(得分:0)
您以错误的方式设置了连接字符串。除非您提供更多代码,否则我不会告诉您错误。
您可以简单地编写如下内容:
[HttpPost]
public ActionResult Create(List<ViewModelName> model)
{
try
{
// example to select all amount values
var x = model.Select(x => x.Amount).ToList();
// do something
return RedirectToAction("Index");
}
catch
{
// error handling
return View(model);
}
}
如果它与app.config一起运行,则错误在您的代码内。