.NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
更新数据
第一种:
先从数据库中取出数据,然后再更新字段。效率较低,需要2次数据库操作;
Entities:就是EF实体数据模型
using (var db = new Entities())
{
var data = db.Member.Find(5);
data.Name = “new name”;
db.SaveChanges();
}
实际生成的SQL语句
select * from Member where ID=5
update Member set Name = ‘new name’ where ID=5
第二种:
根据主键更新某个字段。如下虽然定义的变量里有password,但是没有设置ismodified=true,所以在savechanges时只会更新name的值
using (var db = new Entities())
{
var data = new Member() { ID = 5, Name = “aa”, Password = “aa” };
//禁止修改Member表数据,
db.Entry(data).State = EntityState.Unchanged;// 或db.Member.Attach(data);
//只允许修改Name
db.Entry(data).Property(“Name”).IsModified = true;
db.SaveChanges();
}
生成的SQL:
update Member set Name=‘aa’ where ID=5
第三种:
根据主键更新所有字段,如下虽然未定义password,但到数据库中会更新为null
using (var db = new ScratchDB2Entities())
{
var data = new Member() { ID = 5, Name = “aa” };
//Member所有字段都修改。
db.Entry(data).State = EntityState.Modified;
db.SaveChanges();
}
生成的SQL:
update Member set Name=‘aa’,Password=null where ID=5
增加数据
单条记录添加
1、public void AddRegion()
{
using(Northwind db = new Northwind())
{
Region region = new Region();
region.RegionID = 5;
region.RegionDescription = “青岛”;
db.Region.Add(region);
db.SaveChanges();
}
}
2、public void AddRegion()
{
using (Northwind db = new Northwind())
{
Region region = new Region();
region.RegionID = 6;
region.RegionDescription = “济南”;
//EntityState 枚举类型 Modified、Added、Unchanged
db.Entry(region).State = System.Data.Entity.EntityState.Added;
db.SaveChanges();
}
}
批量增加
第一种方式:使用泛型
public void AddRange()
{
using (Northwind db = new Northwind())
{
List regions = new List();
regions.Add(new Region { RegionID = 6, RegionDescription = “济南” });
regions.Add(new Region { RegionID = 7, RegionDescription = “合肥” });
regions.Add(new Region { RegionID = 8, RegionDescription = “天津” });
db.Region.AddRange(regions);
Response.Write(db.SaveChanges());
}
}
第二种方式:循环实体
public void AddRange()
{
using(Northwind db = new Northwind())
{
for (int i = 10; i < 20; i++)
{
Region region = new Region();
region.RegionID = i;
region.RegionDescription = $“第{i}条”;
db.Region.Add(region);
}
Response.Write(db.SaveChanges());
}
}
删除数据
第二,自己创建一个对象,然后附加,然后删除。
第三,自己创建对象,然后放入EF容器,然后删除。