Я создал класс контроллера, как показано ниже:Как написать чистый SQL в 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());
}
}
Теперь я хочу сделать то же самое, но с использованием чистого SQL запроса в методе Index
. Я пытаюсь заменить код, как показано ниже:
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>
:
Error «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 Object [])» не может быть использован с аргументами типа
Mvc не имеет никакого отношения ни к какой базе данных, которую вы выбрали для вас. – asawyer
У вас, вероятно, нет System.Linq сверху –
Используйте микро-Orm, они именно то, что вы хотите. Dapper.net, SqlFu, PetaPoco, ServiceStack.OrmLite и т. Д. Но вы не хотите запрашивать db в контроллере. Создайте для этого как минимум репозиторий. – MikeSW