創建上下文對象:WordBoradEntities db = new WordBoradEntities(); 添加://1.1創建實體對象 User uObj = new User() { uName = "劉德華", uLoginName = "aaa", uPwd = "asdfasdfasd ...
創建上下文對象:WordBoradEntities db = new WordBoradEntities();
添加://1.1創建實體對象
User uObj = new User()
{
uName = "劉德華",
uLoginName = "aaa",
uPwd = "asdfasdfasdfsadf",
uIsDel = false,
uAddtime = DateTime.Now
};
//1.2通過EF新增到資料庫
//1.2.1將對象加入到數據上下文的 User集合中
db.Users.Add(uObj);
//1.2.2調用數據上下文的保存方法,將對象存數資料庫
db.SaveChanges();
查詢:List<User> list = db.Users.Where(u => u.uName == "劉德華").ToList();
連接查詢:linq連接查詢: from a in db.User join b in db. UsersAddresses on a.Id equals b.udid
EF連接查詢:IQueryable<UsersAddress> addrs = db.User.Include("UsersAddresses").Where(a => a.Id == 1);
另一種連接查詢:var list=db.User.Join(db. UsersAddresses,c=>c.Id,g=>g.udid,(c,g)=>new{Name=c.Name,GroupName=g.GroupName});
刪除:EF中實現刪除有三種方式
註:版本一、二都是根據主鍵刪除,版本三是根據任意條件到資料庫查詢然後再根據查詢的結果進行刪除,實際上版本三也是根據查詢出來的結果中的主鍵進行刪除。
版本一:根據主鍵刪除
//實例化一個Users對象,並指定Id的值
Users user = new Users() { Id = 1 };
//將user附加到上下文對象中,並獲得EF容器的管理對象
var entry = db.Entry<User>(user);或者 var entry=db.Entry(user);
//設置該對象的狀態為刪除
entry.State = EntityState.Deleted;
//保存修改
db.SaveChanges();
Console.WriteLine("刪除成功!");
版本二:根據主鍵刪除
//實例化一個Users對象,並指定Id的值
Users user = new Users() { Id = 1 };
//將user附加到上下文對象中
db.Users.Attach(user);
//刪除user對象
Db.Users.Remove(user);
//保存修改
db.SaveChanges();
Console.WriteLine("刪除成功!");
版本三:根據條件先查詢出來然後再刪除
var list= db.Users.Where(u => u.Name ==”張三”);
if(list!=null&&list.Any())
{
Foreach(User item in list)
{
db.User.Remove(item);
}
}
db.SaveChanges();
修改:
1.官方推薦的修改方式(先查詢,再修改)
//將Id為2的Users數據取出
var user = db.Users.Where(u => u.Id == 2).FirstOrDefault();
Console.WriteLine("修改之前:" + user.UserName);
//修改UserName屬性
user.UserName = "222222222222222";
//保存修改
db.SaveChanges();
Console.WriteLine("修改之後:" + user.UserName);
2.自己優化的修改方式
//1.創建出一個要修改的對象
User use = new User() { uId = 8,uName="小白~~~"};
//2.將對象加入 EF容器,並獲取當前實體對象的狀態管理對象
DbEntityEntry<User> entry = db.Entry<User>(user);
//3.設置該對象為被修改過
entry.State = System.Data.EntityState.Unchanged;
//4.設置該對象的 uName屬性為修改狀態,同時 entry.State 被修改為 Modified 狀態
entry.Property("uName").IsModified = true;
//5.關閉EF實體合法性檢查(如果創建出來的要修改的數據有的欄位沒有賦值則關閉實體合法性檢查,如果所有欄位都賦值了則不用關閉EF實體合法性檢查)
db.Configuration.ValidateOnSaveEnabled = false;
//6.重新保存到資料庫 -- ef 上下文會根據實體對象的狀態,根據 entry.State =Modified 的值生成對應的 update sql 語句.
db.SaveChanges();
Console.WriteLine("修改成功:");