【问题标题】:Adapters with Entity framework (C#)带有实体框架的适配器 (C#)
【发布时间】:2012-04-10 04:00:17
【问题描述】:

我正在尝试使用带有适配器结构的实体框架,我的目标是拥有一个能够管理多个连接的 .edmx 结构。

我需要这些适配器:

  • 基于文件的数据库 (SqlServerCE 3.5)
  • MySql(带有来自 Oracle 的自定义提供程序)
  • Oracle(作为 MySql)
  • SqlServer

我有一个 DAO 类,它从 winform 接收带有数据连接的 bean(依赖注入对象),由于该 bean 中的特定信息,DAO 将通过数据库工厂类加载正确的适配器。

我的数据库工厂将加载一个真正的适配器类(例如,对于实现我的抽象适配器类的 mysql A_Mysql.cs)。

特别想了解hop我可以在adapter中修改连接方式:

public override Entities createConnection(DbConnection dbBean)
    {
        string conn =
          @"metadata=res://*/Toolkit.Database.External.ADO.ADODatabase.csdl" +
          @"|res://*/Toolkit.Database.External.ADO.ADODatabase.ssdl" +
          @"|res://*/Toolkit.Database.External.ADO.ADODatabase.msl;" +
          @"provider=MySql.Data.MySqlClient;" +
          "provider connection string=\"Persist Security Info=True;server=" + dbBean.Server + ";" +
          "Port=" + dbBean.Port + ";" +
          "User Id=" + dbBean.Username + ";"+
          "Password=" + dbBean.Password + ";" +
          "database=" + dbBean.Schema + "\"";

        Entities entities = new Entities(conn);

        return entities;
    }

在我的 DAO 中使用相同的 .edmx……

我很确定这是正确的方法,不幸的是,这个系统总是从 SqlCE 向我返回错误(我从 SqlServerCE 生成了第一个 .emdx,但它不包含有关该数据库和我的 App.config 的任何信息文件没有存储数据库信息)...

你能帮帮我吗?如果需要,请给我回信以获取更多信息。 谢谢。

【问题讨论】:

    标签: mysql sql-server entity-framework c#-4.0 adapter


    【解决方案1】:

    您的数据访问层需要在实体提供者级别进行抽象,而不是在数据库连接级别。您基本上是在谈论使用存储库模式。您需要为您计划支持的每个提供程序提供一个单独的上下文,因为这最终负责将您的 Linq 查询转换为特定数据库平台的正确 SQL 语法。每个上下文都应该实现相同的接口(这是您的存储库接口)。在您的代码中,您针对该接口执行所有操作,而不是实际的上下文类型。然后使用依赖注入框架(例如 Ninject)来管理为您正在使用的数据库提供程序实例化正确的上下文实现。

    【讨论】:

    • 你能帮帮我吗?我还是有一些困难:here
    【解决方案2】:

    它不起作用,因为 EDMX 本身包含有关数据库提供程序的信息。存储在 EDMX 中的整个数据库描述也针对单个数据库提供程序。 SQL Server 2005 和 2008 之间甚至存在差异。对于要支持的每个数据库,您至少需要单独的 SSDL 部分。

    【讨论】:

    • 你能帮帮我吗?我还是有一些困难:here
    【解决方案3】:

    我在 mi 网站上有一篇关于如何使用多个连接到多个数据库的帖子 [它是西班牙语 :)]

    Post

    问候。

    【讨论】:

      猜你喜欢
      • 2012-06-20
      • 2011-10-14
      • 1970-01-01
      • 2022-11-08
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 2011-08-08
      • 2014-03-24
      相关资源
      最近更新 更多