我是果园新手,我有一个新手问题。
我正在将现有的 mvc 应用程序转换为 Orchard,为了练习真实的东西,我正在尝试将 contoso 大学示例 MVC 应用程序转换为 Orchard 以学习基础知识。
我已经为它创建了一个模块,添加了菜单元素来访问应用程序,并且我还能够显示 Home\Index 操作的输出,以便我知道模块设置正确。
现在我正在尝试添加 Home\About 操作,它将显示从数据库查询生成的表。
这给了我以下错误:
服务器“DEV\SQLEXPRESS”上的 MSDTC 不可用。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Data.SqlClient.SqlException:服务器“DEV\SQLEXPRESS”上的 MSDTC 不可用。
源错误:
第 17 行:第 18 行:第 19 行:@foreach(模型中的变量项){ 第 20 行:第 21 行:
源文件:c:\Users\dev1\Documents\My Web Sites\Orchard CMS\Modules\ContosoUniversity\Views\Home\About.cshtml 行:19
源文件:c:\Users\dev1\Documents\My Web Sites\Orchard CMS\Modules\ContosoUniversity\Views\Home\About.cshtml 行:19
现在,经过一番谷歌搜索,我了解到这与抑制环境事务的需要有关。所以我添加一个using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress))到我的家庭控制器:
public class HomeController : Controller
{
private SchoolContext db = new SchoolContext();
[Themed]
public ActionResult Index()
{
ViewBag.Message = "Welcome to Contoso University!";
return View();
}
[Themed]
public ActionResult About()
{
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress))
{
var query = "SELECT EnrollmentDate, COUNT(*) AS StudentCount "
+ "FROM Person "
+ "WHERE EnrollmentDate IS NOT NULL "
+ "GROUP BY EnrollmentDate";
var data = db.Database.SqlQuery(query);
return View(data);
}
}
但是,它没有帮助。我已经阅读了其他地方来用这个来包围你的数据访问代码,但是当我使用实体框架时,我没有明确地打开任何数据连接,因此我不确定在哪里放置 using 语句。