赞
踩
ADO.NETEntity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。ADO.NET Entity Framework 以 Entity DataModel (EDM) 为主,将数据逻 辑层切分为三块,分别为 Conceptual Schema, Mapping Schema 与 Storage Schema 三层,其上还有Entity Client,Object Context 以及 LINQ 可以使用。
EF的运作流程:
右击项目——添加——新建项——数据(C#)——选择ADO.NET实体数据模型——点击添加——然后根据实体数据模型向导来一步步的做。
- <pre name="code" class="csharp"> //EF查询
- public userinfo GetUser(string username)
- {
- using (MyShopDBEntities1 entity = new MyShopDBEntities1())
- {
- userinfo user = entity.userinfo.SingleOrDefault(model => model.username == username);
- return user;
- }
- }
-
- //修改
- public userinfo Update(string username,string userpwd)
- {
-
- using (MyShopDBEntities1 entity = new MyShopDBEntities1())
- {
- // userinfo user = entity.userinfo.SingleOrDefault(model => model.username == username);
- userinfo user = entity.userinfo.FirstOrDefault(model => model.username == username);
- if (user != null)
- { user.userpassword=userpwd;
- entity.SaveChanges();
- }
-
- return user;
- }
-
- }
-
-
-
- //添加
- public userinfo Add(userinfo user)
- {
- using (MyShopDBEntities1 entity = new MyShopDBEntities1())
- {
- entity.userinfo.Add(
-
- new userinfo()
- {
- username = user.username,
- userpwd = user.userpwd
- });
- if (entity.SaveChanges() > 0)
- {
- return user;
- }
- else
- return null;
- }
- }
-
- //删除
- public void Deleted(string username)
- {
- using (MyShopDBEntities1 entity = new MyShopDBEntities1())
- {
- userinfo user = entity.userinfo.FirstOrDefault(m => m.username == username);
- if (user != null)
- {
- entity.userinfo.Remove(user);
- }
-
- if (entity.SaveChanges() > 0)
- {
- //return 0;
- }
-
- }
- }
- EF4.0和EF5.0增删改查的写法区别及执行Sql的方法
-
- EF4.0和EF5.0增删改查的写法区别
- public T AddEntity(T entity)
- {
- //EF4.0的写法
- 添加实体
- //db.CreateObjectSet<T>().AddObject(entity);
- //EF5.0的写法
- db.Entry<T>(entity).State = EntityState.Added;
- //下面的写法统一
- db.SaveChanges();
- return entity;
- }
- public bool UpdateEntity(T entity)
- {
- //EF4.0的写法
- //db.CreateObjectSet<T>().Addach(entity);
- //db.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
- //EF5.0的写法
- db.Set<T>().Attach(entity);
- db.Entry<T>(entity).State = EntityState.Modified;
- return db.SaveChanges() > 0;
- }
- public bool DeleteEntity(T entity)
- {
- //EF4.0的写法
- //db.CreateObjectSet<T>().Addach(entity);
- //db.ObjectStateManager.ChangeObjectState(entity, EntityState.Deleted);
- //EF5.0的写法
- db.Set<T>().Attach(entity);
- db.Entry<T>(entity).State = EntityState.Deleted;
- return db.SaveChanges() > 0;
- }
-
- public IQueryable<T> LoadEntities(Func<T, bool> whereLambda)
- {
- //EF4.0的写法
- //return db.CreateObjectSet<T>().Where<T>(whereLambda).AsQueryable();
- //EF5.0的写法
- return db.Set<T>().Where<T>(whereLambda).AsQueryable();
- }
- 执行SQL语句
- //EF4.0的写法
- //int ExcuteSql(string strSql, ObjectParameter[] parameters);
- return EFContextFactory.GetCurrentDbContext().ExecuteFunction(strSql, parameters);
- //EF5.0的写法
- int ExcuteSql(string strSql, DbParameter[] parameters);
- return DEFContextFactory.GetCurrentDbContext().ExecuteSqlCommand(strSql, parameters);
注:增删改操作必须使用entity.SaveChanges()进行保存一下。entity.SaveChanges()返回值为数据库里受影响的行数entity.SaveChanges()>0表示操作成功。如entity.SaveChanges()=0则表示操作失败。
在BLL和UI层的代码和三层架构的代码一样,我就不一一写了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。