私は以下のようにコントローラクラスを作成しました:どのように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でle?はいの場合、このメソッドでどのような変更を行う必要がありますか?
それを行うために私を助けてください。
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);
}
そして、私はまた、私のプロジェクトでtblCelebrityクラスを作成し
@model MyProject.Models.tblCelebrity
として詳細ビュー受諾タイプ
しかし `tblCelebrity tblcelebrity = db.tblCelebrities.SqlQuery(" dbo.tblCelebrity SELECT * FROM WHERE Celebrity_ID = "+ id); この行が としてエラーを与える非ジェネリックメソッド「System.Data.Entity.DbSet.SqlQuery(文字列、のparams []オブジェクトは)」あなたはこれに似た何かをしたい
MVCはあなたに選ぶものは何でもデータベースフレームワークとは何の関係もありません。 – asawyer
おそらくマイクロORMを使用して、トップ –
にSystem.Linqのを使用していない、彼らは正確に何をしたいです。 Dapper.net、SqlFu、PetaPoco、ServiceStack.OrmLiteなどがありますが、コントローラのDBに問い合わせる必要はありません。少なくともそのリポジトリを作成します。 – MikeSW