• C# EF操作类


    Repository.cs
      1 using System;
      2 using System.Collections.Generic;
      3 using System.Linq;
      4 using System.Data;
      5 using System.Data.Entity;
      6 using Models;
      7 using System.Linq.Expressions;
      8 using System.Reflection;
      9 using System.Web;
     10 using System.Data.OracleClient;
     11 
     12 namespace DAL
     13 {
     14     public class SortExpression<TEntity, TType>
     15     {
     16         Expression<Func<TEntity, TType>> SortProperty;
     17     }
     18 
     19     public class GenericRepository<TEntity> where TEntity : class
     20     {
     21         private Pub p_function = new Pub();
     22 
     23         internal LrBid context;
     24         internal DbSet<TEntity> dbSet;
     25 
     26         public GenericRepository(LrBid context)
     27         {
     28             this.context = context;
     29             this.dbSet = context.Set<TEntity>();
     30         }
     31 
     32         public virtual IEnumerable<TEntity> Get(
     33             Expression<Func<TEntity, bool>> filter = null,
     34             Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
     35             string includeProperties = "")
     36         {
     37             IQueryable<TEntity> query = dbSet;
     38 
     39             if (filter != null)
     40             {
     41                 query = query.Where(filter);
     42             }
     43 
     44             foreach (var includeProperty in includeProperties.Split
     45                 (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
     46             {
     47                 query = query.Include(includeProperty);
     48             }
     49 
     50             if (orderBy != null)
     51             {
     52                 return orderBy(query).ToList();
     53             }
     54             else
     55             {
     56                 return query.ToList();
     57             }
     58         }
     59 
     60         public virtual TEntity GetByID(object id)
     61         {
     62             return dbSet.Find(id);
     63         }
     64 
     65         public virtual void Insert(TEntity entity)
     66         {
     67                         dbSet.Add(entity);
     68         }
     69 
     70         public virtual void Delete(object id)
     71         {
     72             TEntity entityToDelete = dbSet.Find(id);
     73             Delete(entityToDelete);
     74         }
     75 
     76         public virtual void Delete(TEntity entityToDelete)
     77         {
     78             if (context.Entry(entityToDelete).State == EntityState.Detached)
     79             {
     80                 dbSet.Attach(entityToDelete);
     81             }
     82             dbSet.Remove(entityToDelete);
     83         }
     84 
     85         public virtual void Update(TEntity entityToUpdate)
     86         {
     87              dbSet.Attach(entityToUpdate);
     88             context.Entry(entityToUpdate).State = EntityState.Modified;
     89         }
     90 
     91         
     92         /// <summary>
     93         /// 有跟踪状态
     94         /// </summary>
     95         /// <param name="query">SQL查询语句,注意ORCALE参数以:为标记,MS SQL以@为标记</param>
     96         /// <param name="parameters">参数</param>
     97         /// <returns></returns>
     98         public virtual IEnumerable<TEntity> GetWithRawSql(string query, params object[] parameters)
     99         {
    100             return dbSet.SqlQuery(query, parameters).ToList();
    101         }
    102 
    103         //
    104         /// <summary>
    105         /// 没有跟踪状态
    106         /// </summary>
    107         /// <param name="query"></param>
    108         /// <param name="parameters"></param>
    109         /// <returns></returns>
    110         public virtual IEnumerable<TEntity> GetwhithdbSql(string query, params object[] parameters) 
    111         { 
    112             return context.Database.SqlQuery<TEntity>(query, parameters); 
    113         }
    114 
    115         /// <summary>
    116         /// 获取单行数据,多用于统计
    117         /// </summary>
    118         /// <param name="query"></param>
    119         /// <param name="parameters"></param>
    120         /// <returns></returns>
    121         public virtual TEntity GetwhithdbSqlSingle(string query, params object[] parameters)
    122         {
    123             return context.Database.SqlQuery<TEntity>(query, parameters).FirstOrDefault();
    124         }
    125 
    126    }
    127 }
    UnitOfWork.cs
     1 using System;
     2 using Models;
     3 
     4 namespace DAL
     5 {
     6     public class UnitOfWork : IDisposable
     7     {
     8       
     9                //T_ATTACHMENT 
    10         private GenericRepository<T_ATTACHMENT> t_attachment_Repository;
    11 
    12         public GenericRepository<T_ATTACHMENT> T_ATTACHMENT_Repository
    13         {
    14             get
    15             {
    16 
    17                 if (this.t_attachment_Repository == null)
    18                 {
    19                     this.t_attachment_Repository = new GenericRepository<T_ATTACHMENT>(context);
    20                 }
    21                 return t_attachment_Repository;
    22             }
    23         }
    24 
    25  public void Save()
    26         {
    27             context.SaveChanges();
    28         }
    29 
    30         private bool disposed = false;
    31 
    32         protected virtual void Dispose(bool disposing)
    33         {
    34             if (!this.disposed)
    35             {
    36                 if (disposing)
    37                 {
    38                     context.Dispose();
    39                 }
    40             }
    41             this.disposed = true;
    42         }
    43 
    44         public void Dispose()
    45         {
    46             Dispose(true);
    47             GC.SuppressFinalize(this);
    48         }
    49 
    50      }
    51 }  
  • 相关阅读:
    使用强名称为程序集签名
    使用SN.exe对.Net生成的程序集进行签名
    .Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法
    MongoDB查询
    mongo批量写入es
    用 Spark 处理复杂数据类型(Array、Map、JSON字符串等)
    kafka消费者
    kafka生产者
    Pyspark常用API总结
    selenium+chromedriver+python3 不加载图片
  • 原文地址:https://www.cnblogs.com/zzcong/p/2721087.html
Copyright © 2020-2023  润新知