我創建瞭如下一個控制器類:如何在asp.net mvc中編寫純SQL?
public class CelebrityController : Controller
{
private MyDatabase db = new MyDatabase();
public ActionResult Index()
{
var query = db.tableCelebrity.Include(t => t.tableMovie);
return View(query.ToList());
}
}
現在我想要做同樣的事情,但使用的方法Index
一個純粹的SQL查詢。 我試圖取代如下代碼:
public class CelebrityController : Controller
{
private MyDatabase db = new MyDatabase();
public ActionResult Index()
{
IEnumerable<tableCelebrity> results = db.ExecuteQuery<tableCelebrity>
(@"SELECT c1.celebid as CelebrityID, t1.movieName as MovieName
FROM tableCelebrity as c1, tableMovie as t1
WHERE c1.celebid = t1.celebid");
}
}
但是,這給了我一個錯誤在該行db.ExecuteQuery<tableCelebrity>
:
錯誤「MyProject.Models.MyDatabase」不包含一個定義 「的executeQuery」和沒有擴展方法‘的executeQuery’接受類型的 第一個參數‘MyProject.Models.MyDatabase’可以發現
是否possib與ASP.NET MVC?如果是,那麼我必須在該方法中執行哪些更改?
請幫我做到這一點。
I am created Details method as below
public ActionResult ShortDetails(int? id, string tagname)
{
tblCelebrity tblcelebrity = db.tblCelebrities.SqlQuery<tblCelebrity>("SELECT * FROM dbo.tblCelebrity WHERE Celebrity_ID =" + id);
if (tblcelebrity == null)
{
return HttpNotFound();
}
return View(tblcelebrity);
}
和細節視圖接受類型
@model MyProject.Models.tblCelebrity
我還創建tblCelebrity類在我的項目
但是`tblCelebrity tblcelebrity = db.tblCelebrities.SqlQuery(「SELECT * FROM dbo.tblCelebrity WHERE Celebrity_ID =「+ id); 此行給出了錯誤的 非泛型方法「System.Data.Entity.DbSet.SqlQuery(字符串,params對象[])」不能與類型參數一起使用
Mvc與您選擇的任何數據庫框架無關。 – asawyer
您可能沒有在頂部使用System.Linq –
使用微型Orm,它們正是您想要的。 Dapper.net,SqlFu,PetaPoco,ServiceStack.OrmLite等。但你不想在控制器中查詢數據庫。爲此創建至少一個存儲庫。 – MikeSW