2

所以我已经生成了我需要的表,并且我需要能够在我的程序启动时更改我的连接字符串。目前我的连接是

"metadata=res://*/entityframework.Model1.csdl|res://*/entityframework.Model1.ssdl
|res://*/entityframework.Model1.msl;provider=MySql.Data.MySqlClient;
provider connection string="server=localhost;User Id=myuserid;
password=12345678;database=databasename""

到目前为止我所拥有的

获取.designer.cs 文件:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.EntityClient;
using Npgsql;
using System.Configuration;
using System.Data.Entity;
using System.Data.Entity.Validation;
using patientlist.entityframework;
using System.Xml;

namespace patientlist
{
    public partial class Get : Form
    {
        Timer update = new Timer();//60000 = 1min
        public Get()
        {
            InitializeComponent();
        } ....

    private void Timer(object sender, EventArgs e)
    {
        string connectionString = "metadata=res://*/entityframework.Model1.csdl|res://*/entityframework.Model1.ssdl|res://*/entityframework.Model1.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;User Id=myuserid;password=12345678;database=databasename"";

        using (var blah = new ltcsystemEntities())
        {
            blah.Database.Connection.ConnectionString = connectionString;
        } .....

我正在使用 EF5,它首先是 DB(我从我的实体模型生成了一些自动化代码)

4

2 回答 2

7

使用 DB First,您的派生DbContext将作为部分类自动生成。

public partial class MyContext : DbContext
{
   public MyContext()
   : base("name=MyContext")
   {
   }

//...
}

注意它是如何包含一个调用方法签名的父构造函数的无参数构造函数public DbContext(string nameOrConnectionString):传递连接字符串的名称。这是应该在您的 app.config 中的连接字符串。

如果您需要更改连接字符串,您可以编写一个部分类来补充自动生成的类,并提供一个构造函数,该构造函数接受另一个 app.config 连接字符串的名称或连接字符串本身,然后将其传递给父构造函数。

public partial class MyContext
{
   public MyContext(String nameOrConnectionString)
   : base(nameOrConnectionString)
   {
   }
}

然后你可以使用如下。

using(MyContext context = new MyContext(nameOrConnectionString))
{
  //Do stuff
}

但是,如果您基于某些运行时值切换连接字符串,那么您可能会发现创建一个工厂类来处理DbContext.

于 2013-07-03T21:34:21.930 回答
0

参考项目根目录下的Web.config。

您的连接字符串位于“connectionStrings”标签内

于 2013-07-03T21:15:02.670 回答