我正在尝试找到一些文档/文章,其中有人在umbraco中集成了Entity Framework(或任何其他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工具的任何想法/想法?
答案 0 :(得分:2)
我在我的umbraco应用程序中广泛使用EF,它工作得非常好,但不能操纵核心的umbraco表;我用它来操作我添加到数据库的自定义表。
我甚至不确定umbraco表是否会默认设置所有正确的外键和/或索引,以优化EF的使用并使其值得。
如果您只是想要一个包装器来使核心表更易于访问,请考虑使用轻量级包,例如dapper。
答案 1 :(得分:2)
我在很多Umbraco项目中使用过Linq to SQL,但去年已经转而使用PetaPoco。 PetaPoco非常轻量级,易于学习,实施和使用。它也很快。
我发现EF和Linq对SQL并不特别对Subversion友好,当两个或更多开发人员处理相同的数据模式时会导致冲突。
我还发现使用DI实现PetaPoco要简单得多,因为没有上下文需要考虑。对我来说,感觉就像Umbraco 4.10+项目的MVC实现一样自然。
<强>更新强>
转移到Umbraco v6 +(它本身使用PetaPoco),我经常发现我甚至不需要安装ORM,因为我可以使用Umbraco自己的Database对象,因为我说的实际上是PetaPoco。然而,当我需要更多“咕噜咕噜”的东西时,我会选择NHibernate或EF,但这些情况很少,如果可能的话,我会很乐意仍然使用Petapoco或NPoco。
答案 2 :(得分:0)
这是我的两分钱。 :)
EF或任何ORM映射器,您可以采用并选择在umbraco eco系统中满足您的需求。好处是您可以采用自己的查询编写模式来查询Umbraco DB。它会很完美。
一旦采用EF,您将收到以下查询。
var q = from p in cmsContentType.Include("umbracoNode")
同样..你也可以有一些类包装器来保存EDMX中存在的umbraco表的实体。
但是,如果你打算在同一个数据库中有一些自定义表和Umbraco表,那么我建议你创建两个EDMX文件 - 1个用于Umbraco表,2个用于自定义表。这样,您可以减轻一个EDMX文件的负担并获得性能。
回答你的问题...虽然没有可用的文档可以做到这一点..你可以认为你有很多表并将它们放在EDMX上并开始使用它。
下面附有我数据库中的香草味umbraco图片。