如何使用实体框架设置连接字符串 [英] How to set Connection String with Entity Framework

查看:94
本文介绍了如何使用实体框架设置连接字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用EF6与MySQL,并有一个模型,我将用于多个数据库。



我想在我的表单中设置连接设置。



如何设置

解决方案

应该使用 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆