如何在 MVC4 中使用旧式 SQL

5

我正在学习MVC4,接触到了Entity Framework的概念。但是我想知道在MVC 4中如何使用旧式的SQL语句。

比如说我有这个带有EF代码的操作:

public ActionResult Index(){
    var model = from r in restaruants
                select r;
    return View(model);
}

在index函数中,是否可以使用旧式的SQL而不是EF?

我所说的旧式SQL是像"select * from restaurant"这样的语句。

public ActionResult Index(){
   /* Can I have something like this? */
   var model = Return_Model_Somehow("select * from restaurants");

   return View(model);
}

传统的 SQL 是指 ADO.NET 吗? - Sergey Berezovskiy
选择 * 从餐厅 - Arif YILMAZ
你的意思是 LINQ to SQL 吗? - L-Four
2个回答

12

您可以使用SqlQuery方法执行原始SQL:

var model = context.Database.SqlQuery<Restauraunt>("SELECT * FROM Restaruants")
                   .ToList();
return View(model);

这里是MSDN文章:原始SQL查询


1
非常感谢。我会在系统允许的时候标记它。 - Arif YILMAZ
1
@ayilmaz 欢迎) 但是如果您已经拥有 Entity Framework 的全部功能,为什么还需要这个呢? - Sergey Berezovskiy
我认为我的问题非常明显,对于新学习者来说是一个非常普遍的问题。 - Arif YILMAZ
1
这是可能的,我曾经遇到过这样的情况,我正在使用EF一切正常,直到我不得不使用调用Oracle包/函数的查询,所以我发现将查询原封不动地复制是最终的解决方案。 - Ken D

4

MVC(所有版本)不会假定/强制使用任何数据访问方法。如果您说的是“Linq”,则:

string q = "SELECT *FROM Table1";
IEnumerable<Entities.Table1> res = context.ExecuteQuery<Entities.Table1>(q);

现在你已经获得了一个可枚举的集合作为结果,可以根据自己的需要使用它。
希望这能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接