【问题标题】:EF 5.0 & dynamic connection string?EF 5.0 和动态连接字符串?
【发布时间】:2012-09-04 01:59:15
【问题描述】:

现在有一件事让我发疯。

我的(数据库优先)EF-Model 需要一个动态连接字符串(服务器的 IP 地址可能会不时更改)。

因此,在较旧的 EF 版本中,您可以通过构造函数传递连接字符串,但这在 5.0 中似乎是不可能的。

到目前为止,我所阅读的内容,您可以更改您的数据模板,但每次您重新生成模型等时都会被覆盖,因此不是最好的方法。

另一件事是 SQLConnectionFactory,但这似乎根本不起作用 (Database.DefaultConnectionFactory = new SqlConnectionFactory( ... ) 似乎完全被忽略了)。

什么是正确的方法?

【问题讨论】:

  • 我不认为这是一个具体的 EF5 问题,而是设计器不会生成包含为此构造函数的 DbContext 派生类。您应该能够修改 t4 模板以生成您想要的构造函数。
  • 你试过这个 DbContextConstructor msdn.microsoft.com/en-us/library/gg679467%28v=vs.103%29.aspx 吗?它在 EF5 中受支持。
  • @petro.sidlovskyy - 他的问题是设计者生成的上下文类不包含该构造函数,因此他无法在不修改上下文类的情况下访问它,但每次他重新生成时都会被覆盖数据库中的数据。
  • 这很奇怪。如果 DbContext 是作为部分类生成的,您可以只在另一个文件中使用连接字符串实现构造函数,该文件不会被覆盖。

标签: c# sql entity-framework connection-string


【解决方案1】:

正如 petro 所提到的,您可以使用所需的构造函数创建部分类。

例如:

public partial class MyContext : DbContext
{
    public MyContext(string connectionString) : base(connectionString) {}
}

【讨论】:

  • 非常感谢,这对我来说是一个完美的解决方案! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2019-06-26
相关资源
最近更新 更多