ASP.NET MVC 시리즈 프레임워크 구축 (一)의 창고층 구축

16662 단어 asp.net
큰 신은 분출하지 마라, 작은 신은 묵묵히 배운다.
할 줄 아는 것은 언급할 가치도 없는 것이고, 절대로 높고 큰 것은 아니다.
마지막으로 원본 업로드.독자들에게 새로운 인식과 지식을 가져다 줄 수 있기를 바랍니다.
아직 톱에 오른 적이 없다.여러분, 동생을 지지해 주세요.
계속해서 갱신하다.네가 할 때까지 업데이트!!
나는 수다를 떨지 않는다. 나는 단지 중점을 지적할 뿐이다. 지엽적인 것은 댓글로 토론할 수 있다.이 시리즈의 마지막으로, 저는 여러분의 문제를 새로운 Blog에 통일적으로 열거할 것입니다.업무는 계획을 필요로 하고 블로그를 쓰는 것도 마찬가지다.
창고층: 최적화 대기
기본 인터페이스:구속
서브 인터페이스: 기본 인터페이스를 실현한다.서브 창고 저장 중의 특수한 방법을 한층 더 구속하다.
*기본 창고: 구체적으로 실현하고 서브클래스 계승 인터페이스의 방법.
이게 제일 어려워, 제일 중요해!
① db는 구체적인 모델을 직접 표시할 수 없고 db만 사용할 수 있습니다.CreateObjectSet().AddObject(entity);엔티티를 컨텍스트에 첨부합니다.
② where와order 방법은 lamada를 전달해야 한다.각 유형의 문제.whereorder의 사용.
③ Select의 경우 IEumarable에서 IQueryable를 변환하려면 AsQueryable () 방법이 필요합니다.
하위 창고 저장: 기류와 인터페이스를 제외한 특수한 수요 방법만 쓴다.예를 들면 시계가 많다.
 
UserInforRespository의 경우
IBaseRespository.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;

//  System.Data.Entity  
namespace LKBS.CommunicationPlatform.IDAL
{
  public interface IBaseRespository<T> where T : class ,new()
  {
    //        db
    // int rowcount = 0;
    //public        
    bool AddEntity(T entity);
    bool DeleteEntity(T entity);
    bool UpdateEntity(T entity);
    T SelectOneEntity(Func<T, bool> wherelamda);
    IQueryable<T> SelectAllEntityList(Func<T, bool> wherelamda);

    IQueryable<T> SelectPageEntityList<S>(Func<T, S> orderLamda, Func<T, bool> whereLamda, int pageIndex, int pageSize, bool isAsc, out int rowcount);
  }
}

BaseRespository.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data.Entity;
using LKBS.CommunicationPlatform.Model;
using LKBS.CommunicationPlatform.IDAL;
using System.Data;

namespace LKBS.CommunicationPlatform.DAL
{
   public class BaseRespository<T> where T : class,new()
   {
      ModelContainer db = new ModelContainer();

      /// <summary>
      ///   
      /// </summary>
      /// <param name="entity">    ,        NULL</param>
      /// <returns></returns>
      public bool AddEntity(T entity)
      {
         db.CreateObjectSet<T>().AddObject(entity);
         //db.ObjectStateManager.ChangeObjectState(entity, EntityState.Added);
         db.SaveChanges();
         return true;
      }
      /// <summary>
      ///   
      /// </summary>
      /// <param name="entity">            ,    ,    ID</param>
      /// <returns></returns>
      public bool DeleteEntity(T entity)
      {
         //var temp=  db.UserInfor.Where(userinfor=>userinfor.ID>=id).FirstOrDefault<UserInfor>();
         //db.UserInfor.Attach(userinfor);
         //db.ObjectStateManager.ChangeObjectState(userinfor, EntityState.Deleted);
         db.CreateObjectSet<T>().AddObject(entity);
         db.ObjectStateManager.ChangeObjectState(entity, EntityState.Deleted);
         db.SaveChanges();
         return true;
      }
      /// <summary>
      ///  
      /// </summary>
      /// <param name="entity"></param>
      /// <returns></returns>
      public bool UpdateEntity(T entity)
      {
         //db.UserInfor.Attach(userinfor);
         //db.ObjectStateManager.ChangeObjectState(userinfor, EntityState.Modified);
         db.CreateObjectSet<T>().AddObject(entity);
         db.ObjectStateManager.ChangeObjectState(entity, EntityState.Modified);
         db.SaveChanges();
         return true;
      }
      /// <summary>
      ///     
      /// </summary>
      /// <param name="wherelamda"></param>
      /// <returns></returns>
      public T SelectOneEntity(Func<T, bool> wherelamda)
      {
         var rowTemp = db.CreateObjectSet<T>().Where<T>(wherelamda).FirstOrDefault<T>();
         return rowTemp;
      }
      /// <summary>
      ///              
      /// </summary>
      /// <returns></returns>
      public IQueryable<T> SelectAllEntityList(Func<T, bool> wherelamda)
      {
         var rowsTemp = db.CreateObjectSet<T>().Where<T>(wherelamda);
         return rowsTemp.AsQueryable<T>();
      }
      int rowcount = 0;
      //     <S>         ,     ,“    ”<S>.     <S>,          :          <S>   
      public IQueryable<T> SelectPageEntityList<S>(Func<T, S> orderLamda, Func<T, bool> whereLamda, int pageIndex, int pageSize, bool isAsc, out int rowcount)
      {//   pageCount,    
         //IEnumerable<>
         var temp = db.CreateObjectSet<T>().Where<T>(whereLamda);
         rowcount = temp.Count<T>();
         if (isAsc)
         {
            //IQueryable
            IEnumerable<T> entityPageList =
            temp
            .OrderBy<T, S>(orderLamda)
            .Skip<T>((pageIndex - 1) * pageSize).
            Take<T>(pageSize);
            //pageCount=db.UserInfor.
            return entityPageList.AsQueryable();
         }
         else
         {
            IEnumerable<T> entityPageList =
               //db.UserInfor
               //.Where<UserInfor>(whereLamda)//u => u.ID > 0
            temp
            .OrderByDescending<T, S>(orderLamda)//u => u.ID
            .Skip<T>((pageIndex - 1) * pageSize).
            Take<T>(pageSize);
            //pageCount=db.UserInfor.
            return entityPageList.AsQueryable();
         }

      }
   }
}

IUserInforRespository.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using LKBS.CommunicationPlatform.Model;

namespace LKBS.CommunicationPlatform.IDAL
{
 public interface IUserInforRespository:IBaseRespository<UserInfor>
  {
  }
}

 
UserInforRespository.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using LKBS.CommunicationPlatform.Model;
using System.Data;
using LKBS.CommunicationPlatform.IDAL;


namespace LKBS.CommunicationPlatform.DAL
{
  public class UserInforRespository:BaseRespository<UserInfor>,IUserInforRespository
  {
  }
}

좋은 웹페이지 즐겨찾기