ASP.NET MVC DB操作
ASP.NET MVC CRUD処理
スキャフォールディング
Scaffolding:足場作り
CRUD(Create/Read/Upadate/Delete) :追加、読込、変更、削除に関するView、コントローラーを自動作成する
Select
public class ScaffoldingController : Controller
{
private ContextMember _db = new ContextMember();
public ActionResult Index()
{
return View(_db.MemberDB.ToList());
}
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Member member = _db.MemberDB.Find(id);
if (member == null)
{
return HttpNotFound();
}
return View(member);
}
}
TEST.Models.MyDBEntities myDb = new TEST.Models.MyDBEntities();
var model1 = from m in myDb.MyTable1 select m;
var model2 = from m in myDb.MyTable1 where m.Field1 == 3 select m;
Insert
public class ScaffoldingController : Controller
{
[HttpPost]
public ActionResult Create([Bind(Include=
"Id,Name,Email,Birth,Married,Memo")]
Member member)
{
※バインド機能:Includeで指定したパラメーター以外をViewから渡せない。
必須ではないが過多ポスティング攻撃を防止できる。
if (ModelState.IsValid)
{
db.MemberDB.Add(member);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(member);
}
}
TEST.Models.MyDBEntities myDb = new TEST.Models.MyDBEntities();
//modelの新規作成
TEST.Models.MyTable1 model = new TEST.Models.MyTable1();
model.Field1 = 4;
model.Field2 = “d”;
model.Field3 = “ddd”;
//Insert処理
myDb.AddObject(entitySetName: “MyTable1”, entity: model);
myDb.AddToMyTable1(myTable1: model);
※自動生成されるメソッド(中で↑AddObject()を呼び出す)
//保存
myDb.SaveChanges();
Delete
TEST.Models.MyDBEntities myDb = new TEST.Models.MyDBEntities();
//指定したidでレコードを抽出
var model = myDb.MyTable1.Where(m => m.Field1 == id).Single();
//削除
myDb.DeleteObject(entity: model);
//保存
myDb.SaveChanges();
Update
TEST.Models.MyDBEntities myDb = new TEST.Models.MyDBEntities();
//指定したidでレコードを抽出
var model = myDb.MyTable1.Where(m => m.Field1 == id).Single();
//変更する内容を設定
model.Field2 = “D”;
model.Field3 = “DDD”;
//保存
myDb.SaveChanges();