【问题标题】:Avoid expose connection string in startup WPF project避免在启动 WPF 项目中暴露连接字符串
【发布时间】:2018-08-28 02:11:11
【问题描述】:

我有 WPF 项目,并且类库正在使用数据库优先方法处理 EF 6.0。现在我希望实体类进入我的启动项目(WPF 项目),而不在启动项目 app.config 中添加连接字符串。我用谷歌搜索了有助于生成动态连接字符串的类 EntityConnectionStringbuilder。但是,我找不到使用数据库优先方法和 entityconnectionstringbuilder 的解决方案。

请帮助我详细介绍 Db 优先方法中的 EntityConnectionStringbuilder 示例或建议我使用不同的方法。

【问题讨论】:

  • 使用EntityConnectionStringbuilder.ToString()获取连接字符串
  • 如果我写 using(var dbenties = new DB_Entities()) 那么在哪里传递连接字符串和 DB_Entites 构造函数是自动生成的,因为我有 DB 优先方法
  • 我通过在我的 dll 项目上创建部分类并将参数化构造函数作为连接字符串来获得使用 DB 优先方法的解决方案。我创建了具有相同命名空间的部分类。 public partial class SampleEntities : DbContext { public SampleEntities(string connectionstring): base(connectionstring) { } } 一切都和之前一样。现在我正在访问这个类。调用时,我在新对象中使用了 EntityConnectionStringBuilder.Connectionstring。使用(SampleEntities obj = new SampleEntities(connectionstring)) { }

标签: c# wpf entity-framework


【解决方案1】:

您可以使用代码优先的方法

先创建一个示例类

public class Sample
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

现在为任务创建一个任务上下文

public class SampleContext : DbContext
{
    public SampleContext(string connection) : base(connection)
    {
        Database.SetInitializer(new DropCreateDatabaseIfModelChanges<TaskContext>());
    }

    public DbSet<Task> Tasks { get; set; }
}

现在创建一个连接字符串

 string ConnectionString = string.Format("data source=.;initial catalog={0}; User Id={1};Password={2};", connection.FileName, connection.UserName, connection.Password);

现在将连接字符串传递给 SampleContext 它将为您创建数据库

 SampleContext = new SampleContext(ConnectionString);

根据您的使用情况更改连接字符串

【讨论】:

  • 我通过在我的 dll 项目上创建部分类并将参数化构造函数作为连接字符串来获得使用 DB 优先方法的解决方案。我创建了具有相同命名空间的部分类。 public partial class SampleEntities : DbContext { public SampleEntities(string connectionstring): base(connectionstring) { } } 一切都和之前一样。现在我正在访问这个类。调用时,我在新对象中使用了 EntityConnectionStringBuilder.Connectionstring。使用(SampleEntities obj = new SampleEntities(connectionstring)) { }
猜你喜欢
  • 1970-01-01
  • 2018-08-04
  • 1970-01-01
  • 2015-04-06
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 2010-11-26
  • 1970-01-01
相关资源
最近更新 更多