2

我试图找到一些文档/文章,其中有人在 umbraco 中集成了实体框架(或任何其他 ORM 工具),而不是使用基于旧文本的 SQL 查询。

到目前为止,如果我想查询 umbraco 数据库,我已经写了如下内容:

ISqlHelper SqlHelper = DataLayerHelper.CreateSqlHelper(umbraco.GlobalSettings.DbDSN)

    SqlHelper.ExecuteNonQuery(@"insert into Table(id,ColumnName)                        values(@id,@ColumnName)",
    SqlHelper.CreateParameter("@Id", -1),                    SqlHelper.CreateParameter("@ColumnName", foobar),

这很好(不要误会我的意思),但我认为使用某种 ORM 工具可能会更好。

关于如何使用连接现有 Umbraco 表和新表的 ORM 工具的任何想法/想法?

4

3 回答 3

2

我在很多 Umbraco 项目中使用过 Linq to SQL,但在去年转而使用 PetaPoco。PetaPoco非常轻巧,易于学习、实施和使用。它也非常快。

我发现 EF 和 Linq to SQL 对 Subversion 不是特别友好,当两个或多个开发人员处理相同的数据模式时会导致冲突。

我还发现使用 DI 实现 PetaPoco 更加直接,因为不需要考虑上下文。对我来说,这与 Umbraco 4.10+ 项目的 MVC 实现很自然。

更新:

转向 Umbraco v6+(它本身使用 PetaPoco)后,我经常发现我什至不需要安装 ORM,因为我可以使用 Umbraco 自己的 Database 对象,因为正如我所说的实际上是 PetaPoco。但是,当我需要更多“咕噜”的东西时,我会选择 NHibernate 或 EF,但这些情况很少见,如果可能的话,我仍然很乐意使用 Petapoco 或 NPoco。

于 2012-12-05T12:43:37.590 回答
2

我在我的 umbraco 应用程序中广泛使用 EF,它工作得很好,但不能操纵核心 umbraco 表;我用它来操作我添加到数据库中的自定义表。

我什至不确定 umbraco 表是否会默认设置所有正确的外键和/或索引,以优化 EF 的使用并使其值得。

如果您只是想要一个包装器来使核心表更易于访问,请考虑使用轻量级包,例如 dapper。

于 2012-12-05T11:36:15.403 回答
0

这是我的两分钱。:)

EF 或任何 ORM 映射器,您可以采用并选择在 umbraco 生态系统中满足您的需求。好处是您可以采用自己的查询编写模式来查询 Umbraco DB。它会完美地工作。

采用 EF 后,您将遇到以下问题。

var q = from p in cmsContentType.Include("umbracoNode")

同样..您还可以使用一些类包装器来保存 EDMX 中存在的 umbraco 表的实体。

但是,如果您打算在同一个数据库中拥有一些自定义表和 Umbraco 表,那么我建议您创建两个 EDMX 文件 - 1 个用于 Umbraco 表,2 个 Nd 用于自定义表。通过这种方式,您可以减轻一个 EDMX 文件的负担并提高性能。

回答你的问题......尽管没有可用的文档来做到这一点......你可以认为你有很多表并将它们放在 EDMX 上并开始使用它。

下面附上我的数据库中的图像,它是香草味的 umbraco。

在此处输入图像描述

于 2012-12-06T07:53:19.413 回答