我想将连接字符串从 web.config 共享到 app.config 文件以访问数据库中的数据。我在一个解决方案中使用了两个命名空间。
- 我的项目(启动)。
- 存储库(dll 文件)。
我的数据库存在于存储库命名空间中。
我的web.config是-
<connectionStrings>
<add name="MyDBEntity" connectionString="data source=ServerName;initial catalog=MyDatabase;user id=sa;password=password;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient"/>
</connectionStrings>
app.config-
<connectionStrings>
<add name="MyDBEntity" connectionString="metadata=res://*/DatabaseEN.csdl|res://*/DatabaseEN.ssdl|res://*/DatabaseEN.msl;provider=System.Data.SqlClient;provider connection string="data source=ServerName;initial catalog=MyDatabase;user id=sa;password=password;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
单连接
public class SingleConnection
{
private SingleConnection() { }
private static SingleConnection _ConsString = null;
private String _String = null;
public static string ConString
{
get
{
if (_ConsString == null)
{
_ConsString = new SingleConnection { _String = SingleConnection.Connect() };
return _ConsString._String;
}
else
return _ConsString._String;
}
}
/// <summary>
/// this function modified web.config connection string
/// </summary>
/// <returns></returns>
public static string Connect()
{
string sqlString = System.Configuration.ConfigurationManager.ConnectionStrings["MyDBEntity"].ConnectionString;
//Build an Entity Framework connection string
EntityConnectionStringBuilder entityString = new EntityConnectionStringBuilder()
{
Provider = "System.Data.SqlClient",
Metadata = "res://*/DatabaseEN.csdl|res://*/DatabaseEN.ssdl|res://*/DatabaseEN.msl",
ProviderConnectionString = sqlString.ToString()
};
return entityString.ConnectionString;
}
}
Global.asax.cs-
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
Repository.MyDBEntity.ConnectionString = SingleConnection.ConString;
string sqlString = System.Configuration.ConfigurationManager.ConnectionStrings["MyDBEntity"].ConnectionString;
WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(sqlString, "System.Data.SqlClient", "UserProfile", "ID", "EmailID", autoCreateTables: false);
AreaRegistration.RegisterAllAreas();
}
}
家庭控制器
public ActionResult Contact()
{
using(var db = new MyDBEntity())
{
string connection = string.Empty;
try
{
IList<string> cnt = new List<string>();
foreach (var item in db.Countries) // UnintentionalCodeFirstException.
{
cnt.Add(item.CountryName);
}
ViewBag.Message = cnt ;
}
catch (Exception ex)
{
ViewBag.Message = ex.Message;
return View();
}
ViewBag.Message = connection;
}
return View();
}