[Entity Framework] SQLite 透過 ObjectContext 進行資料異動
假設現在我們要更新一個表單,EDM模型長的像下圖這樣,當我要對資料進行新增、刪除、修改時該怎麼做呢?
更新資料:
EDM的更新並非直接反映到底層資料庫,它是先對指定的物件進行異動,最後再將異動更新到底層資料庫,若要對對底層資料庫進行異動更則呼叫 ObjectContext.SaveChanges 方法
新增資料:
要先建立所需要新增的資料物件,然後將它加入到物件容器,新增資料所需的是 ObjectContext.AddObject 方法
{
SQLiteDB_DemoEntities sql = new SQLiteDB_DemoEntities();
Contact contact = new Contact();
contact.ContactAddress = "address";
contact.ContactID = 111;
contact.ContactName = "Name";
sql.AddObject("Contact", contact);
sql.SaveChanges();
}
觀察實體資料庫
修改資料:
必需要先找到要修改的資料,修改完畢後再呼叫SaveChanges方法
{
SQLiteDB_DemoEntities sql = new SQLiteDB_DemoEntities();
System.Data.Objects.ObjectQuery find = sql.Contact;
foreach (Contact item in find)
{
if (item.ContactID == 111)
{
item.ContactAddress = "修改過的Address";
sql.SaveChanges();
break;
}
}
}
觀察實體資料庫
換成LINQ的寫法
{
SQLiteDB_DemoEntities sql = new SQLiteDB_DemoEntities();
var find = from c in sql.Contact
where c.ContactID == 111
select c;
Contact contact = find.First();
contact.ContactAddress = "修改過的Address";
sql.SaveChanges();
}
刪除資料:
與修改資料的邏輯相同。
{
SQLiteDB_DemoEntities sql = new SQLiteDB_DemoEntities();
var find = from c in sql.Contact
where c.ContactID == 111
select c;
if (find.Count() != 0)
{
Contact contact = find.First();
sql.DeleteObject(contact);
sql.SaveChanges();
}
}
刪掉後再觀察實體資料庫,就可以發現資料已經被刪掉了
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET