// 方式一,推荐_testRepository.Insert(newTestEntity() { Name ="Monk", CreatedTime =DateTime.Now });// 方式二_testRepository.Entity.Add(newTestEntity() { Name ="Monk", CreatedTime =DateTime.Now });
新增一条数据,并立即返回新增实体(推荐)
// 方式一,推荐var newEntity =_testRepository.InsertWithSaveChanges(newTestEntity() { Name ="Monk", CreatedTime =DateTime.Now });var newId =_testRepository.Id; // 最新Id// 方式二var newEntity =_testRepository.Entity.Add(newTestEntity() { Name ="Monk", CreatedTime =DateTime.Now });_testRepository.SaveChanges();var newId =_testRepository.Id;
新增多条数据,无需返回
var addEntities =newList<TestEntity>(){newTestEntity() { Name ="Monk", CreatedTime =DateTime.Now },newTestEntity() { Name ="MonkSoul", CreatedTime =DateTime.Now },};_testRepository.Insert(addEntities);
新增多条,并立即返回新增实体集合
var addEntities =newList<TestEntity>(){newTestEntity() { Name ="Monk", CreatedTime =DateTime.Now },newTestEntity() { Name ="MonkSoul", CreatedTime =DateTime.Now },};_testRepository.InsertWithSaveChanges(addEntities);
异步新增
await_testRepository.InsertAsync(newTestEntity() { Name ="Monk", CreatedTime =DateTime.Now });
补充说明
新增操作包含两种:
Insert
InsertWithSaveChanges
它们的主要区别在于是否立即调用了 dbContext.SaveChanges() 方法。
更新操作
更新所有列,先查询实体
var entity =_testRepository.Find(1);entity.Name="MonkSoul";entity.Age=27;
var entity =_testRepository.Find(1);entity.Name="MonkSoul";entity.Age=27;_testRepository.SetModifyProperties(specEntity, u =>u.Name, u =>u.Age);
这种方式,无需调用 _testRepository.Update(entity) 和 _testRepository.SaveChanges()方法。但是会生成更新指定列的 Sql,比如这里是 Name 和 Age 两个属性
更新所有列,无需查询
var entity =newEntity { Name ="Monk", Age =27, Id =1};_testRepository.EntityEntryState(entity) =EntityState.Modified;
注意:必须包含主键 Id
更新指定列,无需查询
var entity =newEntity { Name ="Monk", Age =27, Id =1};_testRepository.Context.Attach(entity);_testRepository.SetModifyProperties(entity, u =>u.Name, u =>u.Age);
注意:必须包含主键 Id
更新所有列,先查询实体,并立即执行
var entity =_testRepository.Find(1);entity.Name="MonkSoul";entity.Age=27;_testRepository.UpdateWithSaveChanges(entity);
更新多条实体,先查询出全部实体
var entities =_testRepository.GetAll(u =>u.Id>100);foreach(var entity in entities){entity.Age=entity.Age+1;}
var entities =_testRepository.GetAll(u =>u.Id>100);foreach(var entity in entities){entity.Age=entity.Age+1;}_testRepository.UpdateWithSaveChanges(entities);
补充说明
更新操作包含两种:
Update
UpdateWithSaveChanges
它们的主要区别在于是否立即调用了 dbContext.SaveChanges() 方法。
删除操作
根据主键Id删除
_testRepository.Delete(1);
根据主键Id删除,并立即执行
_testRepository.DeleteWithSaveChanges();
根据查询的实体删除
var entity =_testRepository.Find(1);_testRepository.Delete(entity);
根据查询的实体删除,并立即执行
var entity =_testRepository.Find(1);_testRepository.DeleteWithSaveChanges(entity);
根据多条已查询的实体删除
var entities =_testRepository.GetAll(u =>u.Id>100);_testRepository.Delete(entities);
根据多条已查询的实体删除,并立即执行
var entities =_testRepository.GetAll(u =>u.Id>100);_testRepository.DeleteWithSaveChanges(entities);
补充说明
删除操作包含两种:
Delete
DeleteWithSaveChanges
它们的主要区别在于是否立即调用了 dbContext.SaveChanges() 方法。
假删除/软删除
根据主键Id假删除
_testRepository.FakeDelete(1, u =>u.Void,0);
根据主键Id假删除,并立即执行
_testRepository.FakeDeleteWithSaveChanges(1, u =>u.Void,0);
根据条件假删除
_testRepository.FakeDelete(u =>u.Id==1, u =>u.Void,0);
根据条件假删除,并立即执行
_testRepository.FakeDeleteWithSaveChanges(u =>u.Id==1, u =>u.Void,0);