umbraco 7如何访问数据库MVC

nic*_*tto 4 sql-server asp.net-mvc database-connection umbraco dbcontext

我有Umbraco 7网站和MVC.

我想对数据库执行一些自定义操作.

据我所知,我应该使用DbContext进行连接.

我已经引用了System.Data.Entity来获取DbContext类.但是,当我尝试使用DbContext时,我收到一个错误说法

The type or namespace name 'DbContext' could not be found (are you missing
a using directive or an assembly reference?)
Run Code Online (Sandbox Code Playgroud)

在我的模型名称空间中

public class umbracoDbDSN : DbContext
{
    //some code
}
Run Code Online (Sandbox Code Playgroud)

你能让我知道我错过了什么吗?

谢谢

dam*_*pee 11

你搞混了.Umbraco使用PetaPoco作为ORM,而非实体框架.您不需要包含System.Data.Entity.你也不需要DbContext.
但是,如果您需要合并现有的DataLayer逻辑,则对于旧系统,您可能需要继续使用上面的代码.然后在互联网上查找实体框架教程以继续您的旅程.

如果你没有拖动遗留的东西,那么问题是:你想对自定义表执行查询还是想要出于某种原因查询Umbraco表.

让我们从最后一个开始吧.查询umbraco表:如果要连接到umbraco SQL表,我开始想知道为什么.有一个快速爆炸的ContentCache,它使您能够从内容部分快速查询所需的一切.您拥有关系,媒体,用户,成员和所需一切的API.所以问题仍然存在,为什么你会连接到umbraco表.

但是,如果您想将数据存储在自定义表中,我会阅读Warren的这篇文章:http://creativewebspecialist.co.uk/2013/07/16/umbraco-petapoco-to-store-blog-comments/

这个想法很简单,您可以重用现有的代码库来扩展umbraco行为,而无需在内容部分中存储内容.

下面是一个简单的例子,用于在查询一些正确创建的表时重用数据库连接...

var db = ApplicationContext.Current.DatabaseContext.Database;
// Fetch a collection of contacts from the db.
var listOfContacs = db.Fetch<Contact>(new Sql().Select("*").From("myContactsTable"));
Run Code Online (Sandbox Code Playgroud)