如何在运行时设置 EF 代码优先连接字符串
How to set a EF code first connection string at runtime
我遗漏了一些东西。我有一个小项目,我试图将一些数据插入数据库。当我创建模型时,我对现有数据库使用了 Code First。我想让应用程序能够在 运行 时间指向任何服务器。这是一个在内部 运行ning 的低级实用程序应用程序,但在 运行ning 它时我需要一些灵活性。
通过阅读一些 msdn 文章,我看到了我可以在初始化时扩展 DBContext 的地方,所以我做了以下事情:
在初始化中添加了一个参数:
public OtherEventModel(string ConnectionString)
: base("name=OtherEventModel")
{...
然后在我的代码中,我根据从 UI:
传入的属性构建了连接字符串
private OtherEventModel ConnectToServer(string server, string username, string password)
{
try
{
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder
{
DataSource = server,
UserID = username,
Password = password,
InitialCatalog = "My_Database",
IntegratedSecurity = true
};
var connection = sqlBuilder.ToString();
ModelContext = new OtherEventModel(connection);
return ModelContext;
}
catch (Exception ex)
{
throw new Exception(string.Format("Error connecting to server {0}", ex.Message));
}
我可以看到创建的连接字符串,但是当我 运行 代码时,我收到连接字符串的异常(找不到应该在 app.config 中的内容)。我在应用程序配置中没有连接字符串或密钥,因为我试图在 运行 时间注入连接字符串。
错误:
Error inserting data No connection string named 'OtherEventModel' could be found in the application config file
从我读到的内容来看,我的印象是代码首先使用标准 SQL 连接字符串并且不需要 EntityConnectionStringBuild(用于对象优先开发)
有人可以指出我错过了什么或做错了什么吗?
提前致谢
大功告成,只需将连接字符串传递给基础即可:
public OtherEventModel(string ConnectionString)
: base(ConnectionString)
确保在下面的方法中注释掉抛出行。不幸的是,每次更新模型时都必须再次执行此操作。
我遗漏了一些东西。我有一个小项目,我试图将一些数据插入数据库。当我创建模型时,我对现有数据库使用了 Code First。我想让应用程序能够在 运行 时间指向任何服务器。这是一个在内部 运行ning 的低级实用程序应用程序,但在 运行ning 它时我需要一些灵活性。 通过阅读一些 msdn 文章,我看到了我可以在初始化时扩展 DBContext 的地方,所以我做了以下事情:
在初始化中添加了一个参数:
public OtherEventModel(string ConnectionString)
: base("name=OtherEventModel")
{...
然后在我的代码中,我根据从 UI:
传入的属性构建了连接字符串private OtherEventModel ConnectToServer(string server, string username, string password)
{
try
{
SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder
{
DataSource = server,
UserID = username,
Password = password,
InitialCatalog = "My_Database",
IntegratedSecurity = true
};
var connection = sqlBuilder.ToString();
ModelContext = new OtherEventModel(connection);
return ModelContext;
}
catch (Exception ex)
{
throw new Exception(string.Format("Error connecting to server {0}", ex.Message));
}
我可以看到创建的连接字符串,但是当我 运行 代码时,我收到连接字符串的异常(找不到应该在 app.config 中的内容)。我在应用程序配置中没有连接字符串或密钥,因为我试图在 运行 时间注入连接字符串。
错误:
Error inserting data No connection string named 'OtherEventModel' could be found in the application config file
从我读到的内容来看,我的印象是代码首先使用标准 SQL 连接字符串并且不需要 EntityConnectionStringBuild(用于对象优先开发)
有人可以指出我错过了什么或做错了什么吗?
提前致谢
大功告成,只需将连接字符串传递给基础即可:
public OtherEventModel(string ConnectionString)
: base(ConnectionString)
确保在下面的方法中注释掉抛出行。不幸的是,每次更新模型时都必须再次执行此操作。