当前位置: 首页 > news >正文

gps建站教程视频/德州网站建设优化

gps建站教程视频,德州网站建设优化,中信建设有限责任公司最新新闻,wordpress 折叠首先推荐一篇很好的EF文章翻译,可以系统的学习一遍。《Entity Framework 6 Recipes》中文翻译系列 EF使用体会 优点: 可以省去Ado.net复杂的管道连接代码。通过简单的引用就能完成对数据库的连接和开发。可以省去一些SQL语句的编写,对一些底层…

首先推荐一篇很好的EF文章翻译,可以系统的学习一遍。
《Entity Framework 6 Recipes》中文翻译系列

EF使用体会

优点:

  • 可以省去Ado.net复杂的管道连接代码。
  • 通过简单的引用就能完成对数据库的连接和开发。
  • 可以省去一些SQL语句的编写,对一些底层可能需要适配多数据库提供了一些方便。

缺点:

  • 学习成本较高,如果不怎么懂SQL,索引的一些数据库知识,也写不太好相对优化的Linq查询,所有EF既要懂Sql又懂Linq是最好的。
  • 比较大,EF的dll默认是连接SqlServer若要连接其它数据库引用其它数据库的DLL加起来10几M,而像Dapper这样的轻量级框架才100多K。
  • 查询只支持数据结果对实体的转换,不支持DataTable。

资料汇总

EF连接

连接数据库的多种方法

EF配置

EF的霸气配置秒杀一切

EF进阶

1.学习LINQ To Sql

LINQ To Sql语法汇总

2.学习Expression

LINQ Expression高级篇

3.优化测试

EF查询百万级数据的性能测试

简单的类库

项目如图:
项目图

Data.Map中放相关的EntityTypeConfiguration
Data.Module中相关的实体

这里贴一下EFContext和EFDatabase的类

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;namespace Data.EF
{//[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]  Mysql数据库配置public class EFContext : DbContext, IDisposable{public EFContext(string dbName): base(dbName){Database.SetInitializer<EFContext>(null);this.Configuration.AutoDetectChangesEnabled = false;this.Configuration.ValidateOnSaveEnabled = false;this.Configuration.LazyLoadingEnabled = false;this.Configuration.ProxyCreationEnabled = false;}protected override void OnModelCreating(DbModelBuilder modelBuilder){string assembleFileName = Assembly.GetExecutingAssembly().CodeBase.Replace("Data.EF.DLL", "Data.Map.dll").Replace("file:///", "");Assembly asm = Assembly.LoadFile(assembleFileName);var typesToRegister = asm.GetTypes().Where(type => !String.IsNullOrEmpty(type.Namespace)).Where(type => type.BaseType != null && type.BaseType.IsGenericType && type.BaseType.GetGenericTypeDefinition() == typeof(EntityTypeConfiguration<>));foreach (var type in typesToRegister){dynamic configurationInstance = Activator.CreateInstance(type);modelBuilder.Configurations.Add(configurationInstance);}base.OnModelCreating(modelBuilder);}}}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.Entity;
using System.Data.Entity.Core.Metadata.Edm;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Text;namespace Data.EF
{public class EFDatabase{/// <summary>/// 返回字符集/// </summary>/// <typeparam name="Table"></typeparam>/// <returns></returns>public DbSet<Table> Set<Table>() where Table : class{return dbcontext.Set<Table>();}#region 属性/// <summary>/// 获取 当前使用的数据访问上下文对象/// </summary>public DbContext dbcontext { get; set; }/// <summary>/// 事务对象/// </summary>public DbTransaction dbTransaction { get; set; }#endregion#region 构造函数public EFDatabase(string dataBase){dbcontext = new EFContext(dataBase);}#endregion#region 私有方法/// <summary>/// 获取实体类键值(缓存)/// </summary>/// <typeparam name="T"></typeparam>/// <param name="entity"></param>/// <returns></returns>private static Hashtable GetPropertyInfo<T>(T entity){Type type = entity.GetType();object CacheEntity = null;if (CacheEntity == null){Hashtable ht = new Hashtable();PropertyInfo[] props = type.GetProperties();foreach (PropertyInfo prop in props){string name = prop.Name;object value = prop.GetValue(entity, null);ht[name] = value;}return ht;}else{return (Hashtable)CacheEntity;}}/// <summary>/// 存储过程语句/// </summary>/// <param name="procName">存储过程名称</param>/// <param name="dbParameter">执行命令所需的sql语句对应参数</param>/// <returns></returns>private static string BuilderProc(string procName, params DbParameter[] dbParameter){StringBuilder strSql = new StringBuilder("exec " + procName);if (dbParameter != null){foreach (var item in dbParameter){strSql.Append(" " + item + ",");}strSql = strSql.Remove(strSql.Length - 1, 1);}return strSql.ToString();}private int Delete<T>(T entity) where T : class{dbcontext.Set<T>().Attach(entity);dbcontext.Set<T>().Remove(entity);return dbTransaction == null ? dbcontext.SaveChanges() : 0;}private int Delete<T>(IEnumerable<T> entities) where T : class{foreach (var entity in entities){dbcontext.Set<T>().Attach(entity);dbcontext.Set<T>().Remove(entity);}return dbTransaction == null ? dbcontext.SaveChanges() : 0;}#endregionpublic EFDatabase BeginTrans(){DbConnection dbConnection = ((IObjectContextAdapter)dbcontext).ObjectContext.Connection;if (dbConnection.State == ConnectionState.Closed){dbConnection.Open();}dbTransaction = dbConnection.BeginTransaction();return this;}public int Commit(){try{int returnValue = dbcontext.SaveChanges();if (dbTransaction != null){dbTransaction.Commit();this.Close();}return returnValue;}catch (Exception ex){if (ex.InnerException != null ){throw ex.InnerException;}throw;}finally{if (dbTransaction == null){this.Close();}}}public void Rollback(){this.dbTransaction.Rollback();this.dbTransaction.Dispose();this.Close();}public void Close(){dbcontext.Dispose();}public int ExecuteBySql(string strSql){dbcontext.Database.CommandTimeout = 60;return dbcontext.Database.ExecuteSqlCommand(strSql);}public int ExecuteBySql(string strSql, params object[] dbParameter){dbcontext.Database.CommandTimeout = 60;return dbcontext.Database.ExecuteSqlCommand(strSql, dbParameter);}public int ExecuteByProc(string procName){return dbcontext.Database.ExecuteSqlCommand(BuilderProc(procName));}public int ExecuteByProc(string procName, System.Data.Common.DbParameter[] dbParameter){return dbcontext.Database.ExecuteSqlCommand(BuilderProc(procName, dbParameter), dbParameter);}public T FindEntity<T>(object keyValue) where T : class{return dbcontext.Set<T>().Find(keyValue);}public T FindEntity<T>(Expression<Func<T, bool>> condition) where T : class, new(){return dbcontext.Set<T>().Where(condition).FirstOrDefault();}public IQueryable<T> FindList<T>(Expression<Func<T, bool>> condition) where T : class, new(){return dbcontext.Set<T>().Where(condition);}public IQueryable<T> FindList<T>(string strSql) where T : class{return dbcontext.Set<T>().SqlQuery(strSql).AsQueryable();}public IQueryable<T> FindList<T>(string strSql, DbParameter[] dbParameter) where T : class{return dbcontext.Set<T>().SqlQuery(strSql, dbParameter).AsQueryable();}public int Delete<T>(object propertyValue, string propertyName) where T : class{string TableName = typeof(T).Name;return this.ExecuteBySql("delete from " + TableName + " where " + propertyName + " = {0}", propertyValue);}public int Delete<T>(Expression<Func<T, bool>> condition) where T : class, new(){IEnumerable<T> entities = dbcontext.Set<T>().Where(condition).ToList();return entities.Count() > 0 ? Delete(entities) : 0;}public int Update<T>(T entity) where T : class{dbcontext.Set<T>().Attach(entity);Hashtable props = GetPropertyInfo<T>(entity);foreach (string item in props.Keys){object value = dbcontext.Entry(entity).Property(item).CurrentValue;if (value != null){if (value.ToString() == "&nbsp;"||value.ToString().Trim()=="")dbcontext.Entry(entity).Property(item).CurrentValue = null;dbcontext.Entry(entity).Property(item).IsModified = true;}}return dbTransaction == null ? this.dbcontext.SaveChanges() : 0;}public int Update<T>(IEnumerable<T> entities) where T : class{foreach (var entity in entities){this.Update(entity);}return dbTransaction == null ? this.dbcontext.SaveChanges() : 0;}}
}

转载于:https://www.cnblogs.com/kaoleba/p/9739170.html

http://www.lbrq.cn/news/832519.html

相关文章:

  • 天津seo培训哪家好/搜索引擎优化核心
  • 集团网站设计建设/ai智能搜索引擎
  • 烟台做网站排名/企业培训师
  • 湖南星大建设集团有限公司网站/百度手机快速排名点击软件
  • 企业电商网站商城建设/b2b免费发布信息网站
  • 什么是网站收录/中国站长站
  • 吉林网站建设吉林/上海搜索引擎优化公司排名
  • magento网站制作/北大青鸟职业技术学院简介
  • 中国银行全球门户网站/淘宝关键词排名怎么查询
  • 百度收录最高发帖网站/推销一个产品的方案
  • 公司网站建设升上去/游戏行业seo整站优化
  • 长沙网站制造/商城网站开发公司
  • 怎么做网站然后卖出去/网站如何发布
  • 网站flash效果/百度站长平台官网登录入口
  • 网站制作教程及流程/优化seo厂家
  • 域名通过了才可以做网站吗/关键词分析软件
  • 建站之星有手机版模板/站长统计app进入网址新版
  • https网站建设花费/google图片搜索
  • 国外做家谱的网站/汕头seo网站推广
  • 做打鱼网站/中国50强企业管理培训机构
  • 邵阳疫情最新消息今天又封了/抖音seo是什么
  • 网站开发背景图模板/郑州外语网站建站优化
  • 上虞网站建设baidu/百度客服人工电话
  • 开发网站用得最多的是什么语言/住房和城乡建设部
  • 自己做产品网站/网站优化的意义
  • 网站的登录功能一般是用cookie做的/百度一下官方下载安装
  • 企业手机网站开发/做网络推广的网站有哪些
  • 广西建设工程管理网站/每日精选12条新闻
  • 网站风格 颜色搭配/sem和seo的区别
  • 网站新闻源码/网页设计与制作项目教程
  • picoCTF 2024: [[NoSQL]] Injection - Writeup
  • LVS 集群技术实践:NAT 与 DR 模式的配置与对比
  • OllyDbg技巧学习
  • 读书笔记:《动手做AI Agent》
  • Helm-k8s包管理工具(一)核心概念、helm工作目录
  • AndroidStudio环境搭建