如何使用实体框架设置连接字符串 [英] How to set Connection String with Entity Framework
问题描述
我想在我的表单中设置连接设置。
如何设置
应该使用 EntityConnectionFactory
br>
这是你需要的。
public string CreateConnectionString(string BasicConnectionString)
{
// EntityConnectionFactory
var entityConnectionStringBuilder = new EntityConnectionStringBuilder();
entityConnectionStringBuilder.Provider =你的Provicer这里//对我来说,它是System.Data.SqlClient;
entityConnectionStringBuilder.ProviderConnectionString = BasicConnectionString;
entityConnectionStringBuilder.Metadata =res:// *;
return entityConnectionStringBuilder.ToString();
}
以下是一个示例用法
MyContext ctx = new MyContext(CreateConnectionString())
< h3> :: Update ::
正如您使用DB第一个方法一样,请参阅以下图片
<当这两个单选按钮可用时,img src =https://i.stack.imgur.com/5Gi87.pngalt =pic>
选择第一个。那么你可以设置你的模型的连接字符串。
这是我的上下文的样子(虽然它是对象的上下文,但在上下文中并不重要这个问题)
public partial class DataContext:ObjectContext
{
#region构造函数
///< summary>
///使用应用程序配置文件的DataContext部分中找到的连接字符串初始化新的DataContext对象。
///< / summary>
public DataContext():base(name = DataContext,DataContext)
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
///< summary>
///初始化一个新的DataContext对象。
///< / summary>
public DataContext(string connectionString):base(connectionString,DataContext)
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
///< summary>
///初始化一个新的DataContext对象。
///< / summary>
public DataContext(EntityConnection connection):base(connection,DataContext)
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
#endregion
#region部分方法
partial void OnContextCreated();
#endregion
...
}
更新
在自动生成的实体类之外的部分类中添加您要查找的构造函数:
public partial class WMSChennaiDEVEntities:DbContext
{
public WMSChennaiDEVEntities(string connectionsstring)
:base(connectionstring)
{
}
}
这个构造函数不包括在EF 5/6中,显然是为了阻止我们当需要实体连接字符串时,意外传递一个sql连接字符串。
I am using EF6 with MySQL and have a Model that I will use for MULTIPLE Databases.
I would like to be able to set the connections settings in my Form.
How do I set the Connection String for my Model programatically?
you should use EntityConnectionFactory
Here is what you need.
public string CreateConnectionString(string BasicConnectionString)
{
//EntityConnectionFactory
var entityConnectionStringBuilder= new EntityConnectionStringBuilder();
entityConnectionStringBuilder.Provider = "Your Provicer here" //For me it is "System.Data.SqlClient";
entityConnectionStringBuilder.ProviderConnectionString = BasicConnectionString;
entityConnectionStringBuilder.Metadata = "res://*";
return entityConnectionStringBuilder.ToString();
}
Here is an sample usage
MyContext ctx = new MyContext(CreateConnectionString())
:: Update ::
As you are using DB first method, see the following image
when these two radio buttons are available, select the first one. Then you will be able to set the connection string of your model.
Here is how my context looks like (Though it is object context. But doesn't matter in context of this question)
public partial class DataContext : ObjectContext
{
#region Constructors
/// <summary>
/// Initializes a new DataContext object using the connection string found in the 'DataContext' section of the application configuration file.
/// </summary>
public DataContext() : base("name=DataContext", "DataContext")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// Initialize a new DataContext object.
/// </summary>
public DataContext(string connectionString) : base(connectionString, "DataContext")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// Initialize a new DataContext object.
/// </summary>
public DataContext(EntityConnection connection) : base(connection, "DataContext")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
#endregion
#region Partial Methods
partial void OnContextCreated();
#endregion
...
}
Update
Add the constructor you are looking for in a partial class outside of the auto-generated entity class:
public partial class WMSChennaiDEVEntities : DbContext
{
public WMSChennaiDEVEntities(string connectionstring)
: base(connectionstring)
{
}
}
This constructor is not included in EF 5/6 apparently to prevent us from accidentally passing a sql connection string when an entity connection string is desired.
这篇关于如何使用实体框架设置连接字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!