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();