gpt4 book ai didi

entity-framework - Entity Framework - 没有配置的数据库优先

转载 作者:行者123 更新时间:2023-12-01 10:56:20 25 4
gpt4 key购买 nike

我正在开发一个使用 EF 处理现有数据库的类库。我想避免类库(和 .exe 或网站)的使用者在 *.config 文件中包含实体连接字符串。我希望连接字符串设置一个运行时。

如何使用数据库优先方法设置连接字符串?没有采用连接字符串的构造函数重载,当我创建一个(在单独的部分类中)时,我得到了一个“UnintentionalCodeFirstException”。

我已经查看了以下链接:

最佳答案

DbContext 上有一个构造函数接受一个 DbConnection,您需要为它使用一个 EntityConnection 对象:

SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder();

// Set the properties for the data source.
sqlBuilder.DataSource = "server name";
sqlBuilder.InitialCatalog = "database name";
sqlBuilder.IntegratedSecurity = true;

// Build the SqlConnection connection string.
string providerString = sqlBuilder.ToString();

var entityBuilder = new EntityConnectionStringBuilder();

// Initialize the EntityConnectionStringBuilder.
//Set the provider name.
entityBuilder.Provider = "System.Data.SqlClient";

// Set the provider-specific connection string.
entityBuilder.ProviderConnectionString = providerString;

// Set the Metadata location.
entityBuilder.Metadata = @"res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl";

using(var context = new YourDbContext(entityBuilder.ToString())){
//do stuff here
}

需要注意的重要一点是元数据部分 - “Model1”显然需要替换为您的模型名称。

引用:http://msdn.microsoft.com/en-us/library/bb738533.aspx

编辑 20/02/2013 22:25

因此,作为补充,您需要使用一个分部类来扩展创建的 DbContext 类,该分部类添加了一个构造函数来支持上述代码,如下所示:

public partial class YourDbContext
{
public YourDbContext(string connection) : base(connection) {}
}

此类需要与 Entity Framework 向导生成的 DbContext 位于同一命名空间中。

关于entity-framework - Entity Framework - 没有配置的数据库优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com