您的当前位置:首页正文

Entity Framework增删查改

2024-08-23 来源:小奈知识网
【C#】Entity Framework 增删改查和事务操作

1、增加对象

DbEntity db = new DbEntity();

//创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否可空) var user = new User {

Name = \"bomo\", Age = 21,

Gender = \"male\" };

db.User.Add(user); db.SaveChanges();

2、删除对象,删除只需要对象的主键

DbEntity db = new DbEntity();

//删除只需要主键,这里删除主键为5的行 var user = new User {Id = 5};

//将实体附加到对象管理器中 db.User.Attach(user); //方法一:

db.User.Remove(user);

//方法二:把当前实体的状态改为删除 //db.Entry(user).State = EntityState.Deleted; db.SaveChanges();

3、修改对象 方法一:

DbEntity db = new DbEntity();

//修改需要对主键赋值,注意:这里需要对所有字段赋值,没有赋值的字段会用NULL更新到数据库 var user = new User {

Id = 5,

Name = \"bomo\", Age = 21,

Gender = \"male\" };

//将实体附加到对象管理器中 db.User.Attach(user);

//把当前实体的状态改为Modified

db.Entry(user).State = EntityState.Modified; db.SaveChanges();

方法二:方法一中每次都需要对所有字段进行修改,效率低,而且麻烦,下面介绍修改部分字段

DbEntity db = new DbEntity();

//修改需要对主键赋值,注意:这里需要对所有字段赋值,没有赋值的字段会用NULL更新到数据库 var user = new User {

Id = 5,

Name = \"bomo\", Age = 21 };

//将实体附加到对象管理器中 db.User.Attach(user);

//获取到user的状态实体,可以修改其状态 var setEntry = ((IObjectContextAdapter)

db).ObjectContext.ObjectStateManager.GetObjectStateEntry(user); //只修改实体的Name属性和Age属性 setEntry.SetModifiedProperty(\"Name\"); setEntry.SetModifiedProperty(\"Age\");

db.SaveChanges();

4、使用事务:使用事务很简单,只要把需要的操作放在 TransactionScope 中,最后提交

DbEntity db = new DbEntity();

using (var scope = new TransactionScope()) {

//执行多个操作 var user1 = new User {

Name = \"bomo\", Age = 21,

Gender = \"male\" };

db.User.Add(user1); db.SaveChanges();

var user2 = new User {

Name = \"toroto\",

Age = 20,

Gender = \"female\" };

db.User.Add(user2); db.SaveChanges();

//提交事务

scope.Complete(); }

5、查询:查询通过LinQ查询

DbEntity db = new DbEntity(); //选择部分字段

var user = db.User.Where(u => u.Name == \"bomo\").Select(u => new {Id = u.Id, Name = u.Name, Age = u.Age}).FirstOrDefault();

//只有调用了FirstOrDefault, First, Single, ToList, ToArray等函数才会执行对数据库的查询

查询基本都是LinQ的内容,内容有点多,下次在总结

因篇幅问题不能全部显示,请点此查看更多更全内容