簡體   English   中英

如何在asp.net mvc中編寫純SQL?

[英]How to write pure SQL in asp.net mvc?

我創建了一個控制器類,如下所示:

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'的第一個參數'

是否可以使用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(string,params object [])'不能與類型參數一起使用

你想要類似的東西:

using (var context = new BloggingContext())
{
    var blogs = context.Blogs.SqlQuery("SELECT * FROM dbo.Blogs").ToList();
}

你可以在這里找到教程: http//msdn.microsoft.com/en-us/data/jj592907.aspx

當我之前收到錯誤時,這是​​因為連接字符串中的用戶沒有對DB的執行權限。 一旦我使用了具有權限的用戶,或者在查詢中使用了“GRANT EXECUTION”語句,一切都完美地解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM