【问题标题】:One Set of POCO classes with interchangeable databases一组具有可互换数据库的 POCO 类
【发布时间】:2011-06-04 14:44:29
【问题描述】:

我有一个使用一组表来存储数据的应用程序。

根据客户要求,他们可以使用 Oracle 或 SQL Server。

有没有一种方法可以创建代表表的所有 POCO 类,然后以某种方式在调用 Save() 方法时更新正确的数据库?

例如:

Person p = new Person;
p.Name = "John";
p.Save(); //This saves it to the database but somehow it knows to use a Oracle connection or SQL Connection

更新: 我刚刚读到 Entity Framework 4 支持多个数据库,但以前的版本有很多臃肿,所以我有点被它推迟了,不确定这是否会给我我想要的。

【问题讨论】:

  • somehow it knows to use a Oracle connection or SQL Connection 那是因为连接字符串要么是 Oracle,要么是 SQL Server。这不是魔法:)

标签: .net orm subsonic subsonic3 data-access-layer


【解决方案1】:

如果我有这种要求,我将使用一些适用于 POCO 的 ORM(最好使用像 Subsonic 这样的存储库模式)。然后你可以在配置文件中更改连接或使用 IOC 以正确的上下文初始化 ORM。

【讨论】:

  • Subsonic 是否会基于一个数据库创建 POCO,然后您可以在配置文件中指定不同的连接?
  • 是的@Jon,如果表结构和数据类型(在数据库端)是聚合的,那么这不会是一个问题。您可以使用两个具有不同连接字符串的SimpleRepository 对象。
  • 阅读 Subsonic 文档,似乎使用 SimpleRepository 它不会创建 POCO。
  • 尝试var repo=new SimpleRepository("connection string"); 现在您可以使用以下方法从 db 创建 poco:var poco = repo.Find<POCO_CLASS>(x=>x.Name == "some name to match"); 但是是的,您必须首先为 db 中的每个表编写类(表名必须是复数,如 User 类你应该有用户表)
  • 谢谢。我想我要做的是使用 Active Record T4 模板来生成我的 POCO,然后使用存储库模式,因此我可以切换连接字符串。谢谢。
猜你喜欢
  • 2015-01-21
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多