随笔分类 -  其它 / Entity Framework

微软即linq to sql之后又一个成功的ORM软件,它可以生成三种ORM方式,如数据优先,代码优先和模型优先
摘要:回到目录 概念 ISoftDelete即软删除,数据在进行delete后不会从数据库清除,而只是标记一个状态,在业务范围里都不能获取到这个数据,这在ORM框架里还是比较容易实现的,对传统的ado来说需要对sql统一进行拦截和条件过滤. 实施步骤 代码实现 1 实体继承ISoftDelete 2 数据 阅读全文
posted @ 2018-02-28 14:52 张占岭 阅读(1271) 评论(0) 推荐(0) 编辑
摘要:回到目录 对于Dapper是一个轻量级的数据访问框架,而需要使用者去自己做SQL,它,只是一个数据访问者! 对些,Dapper推出了Contrib扩展包,它可以友好的让开发人员使用linq,而不需要写SQL,但在使用时要注意,你的增,删,改,单表查询是可以用它的,但对于多表的join操作就不要用了, 阅读全文
posted @ 2017-09-21 13:40 张占岭 阅读(1256) 评论(2) 推荐(0) 编辑
摘要:回到目录 主要是通过vs2017+mysql.Data+Mysql.data.Entity+ef 来进行开始,当我们选择数据模型生成实体时,可以会出现以下问题: http:// 解决办法: 1、安装mysql-connector-net-6.8.8.msi,地址,http://dev.mysql.c 阅读全文
posted @ 2017-08-30 17:31 张占岭 阅读(903) 评论(4) 推荐(0) 编辑
摘要:回到目录 对于在Linq To Entity里使用日期函数需要DbFunctions里的扩展方法,而不能使用.net里的日期函数,因为linq的代码会被翻译成SQL发到数据库端,如你的.net方法对于数据库是不知道的,所以需要使用DbFunctions里的函数,它是为sqlserver设计的,而如果 阅读全文
posted @ 2017-08-16 09:54 张占岭 阅读(2393) 评论(0) 推荐(0) 编辑
摘要:回到目录 如果在mysql中添加了自增字段,用来维护行的版本,那么在EF中会有一个问题,会把它当成是数据表主键,当你的真正主键是自曾时,就会把默认值0拼到生成的SQL语句里,导致你的insert出错,这是那个原因! 我们需要把它注释掉,担注释后,又有新的问题出来了 这种问题也很无厘头! 这种问题是因 阅读全文
posted @ 2017-07-20 10:20 张占岭 阅读(1200) 评论(0) 推荐(0) 编辑
摘要:回到目录 ef这个orm工具确实强大,无论在实体建模还是在实体关系上,都发挥的很出色,而最近的code first针对数据库变更的使用更让我眼前一亮,先不说对sqlserver的支持,因为mssql本身就是微软的,我们主要看一下它对mysql的数据变更的支持! 数据上下文的变更:add-migrat 阅读全文
posted @ 2017-07-04 17:36 张占岭 阅读(1304) 评论(0) 推荐(1) 编辑
摘要:一些介绍 CodeFirst是EntityFrameworks的一种开发模式,即代码优先,它以业务代码为主,通过代码来生成数据库,并且加上migration的强大数据表比对功能来生成数据库版本,让程序开发人员不用维护数据库的变更,而直接维护migration即可,在它里面有你当前版本和过去历史版本的 阅读全文
posted @ 2017-06-22 16:26 张占岭 阅读(3798) 评论(1) 推荐(6) 编辑
摘要:回到目录 在MVC,EF,LINQ环境里,我们经常会用到DataModel(DO)和ViewModel(VO),可能对于它们的属性校验我们会采用特性的方式,当然这很直观,就连微软的DEMO也是如些,一般是这样的代码 而这种设计方式给我们以后的维护带来很多问题,具体大叔总结一下: 综上所述,Fluen 阅读全文
posted @ 2017-06-01 17:05 张占岭 阅读(1445) 评论(0) 推荐(1) 编辑
摘要:回到目录 TransactionScope是.net环境下的事务,可以提升为分布式事务,这些知识早在很久前就已经说过了,今天不再说它,今天主要谈谈Savechanges()这个方法在TransactionScope块里的作用,我们知识TransactionScope只有显示的提交动作而没有回滚,那么 阅读全文
posted @ 2017-05-25 14:29 张占岭 阅读(3883) 评论(0) 推荐(0) 编辑
摘要:回到目录 对于单个分支项目来说,只要你生成一个migration的版本,就会有一个时间戳文件的对应,而在update-database时,会从最小的时间开始,一直执行到当前版本的migration,而对于多个分支项目来说,会涉及在每个分支上添加自己的migration计划,这时,我们可能会手动修改时 阅读全文
posted @ 2017-03-16 16:56 张占岭 阅读(1140) 评论(0) 推荐(0) 编辑
摘要:回到目录 我们知道在Linq里的分组groupby可以对集合中一个或者多个字段进行分组,并对其中一个属性进行聚合,而Linq为我们提供了多种聚合方法,由aver,sum,count等,而在大叔权限体系中,以上几种聚合是不够的,因为我们需要对权限字段进行按位聚合,或者说对它进行按位的或运算,这对于学过 阅读全文
posted @ 2016-08-06 08:53 张占岭 阅读(2028) 评论(0) 推荐(2) 编辑
摘要:回到目录 Migrations即迁移,它是EF的code first模式出现的产物,它意思是说,将代码的变化反映到数据库上,这种反映有两种环境,一是本地开发环境,别一种是服务器的生产环境,本地开发环境主要使用包管理工具的update-database即可完成数据库的迁移(变更),而在生产环境就显得麻 阅读全文
posted @ 2016-07-27 13:31 张占岭 阅读(5207) 评论(2) 推荐(2) 编辑
摘要:回到目录 在EF里,我们设计模型时,会设计到多对多关系,在EF里会把这种关系会转成两个一对多的关系表,这是比较友好的,因为多对多来说,对于业务本身没什么意思,所以隐藏了,没什么坏处,但对于这个隐藏来说,对开发人员来讲你就无法主动控制这张关系表了,而需要使用EF的update来更新主表的同时去更新关系 阅读全文
posted @ 2016-07-27 09:51 张占岭 阅读(4319) 评论(0) 推荐(1) 编辑
摘要:回到目录 本文介绍两个概念,防数据库自动删除,这是由于在code first模式下,当数据实体发生变化时,会对原来数据库进行删除,并将新数据表添加进来,但这对于我们的运营环境数据库,是万万不能接受的,第二个问题是数据迁移问题,当你有新的实体建立后,如何响应到数据库,这成为一个问题,当然实现也很简单, 阅读全文
posted @ 2016-07-06 11:37 张占岭 阅读(4296) 评论(5) 推荐(3) 编辑
摘要:回到目录 关于逻辑删除 对于逻辑删除之前的做法是在实体类中加个字段,一般是status,其中一种状态是删除,当然也有其它做法,如加个bool的字段IsDeleted,这些其实都过于武断,即它在基类里加上后,所以实体类都会有这种特性,而对于现实的数据表,可能不显示这种逻辑删除的特性,如关系表,日志表, 阅读全文
posted @ 2016-06-13 14:02 张占岭 阅读(2067) 评论(6) 推荐(4) 编辑
摘要:回到目录 这个文章对之前EF的一个补充,对于一些自关联表的添加,如果你建立了表约束确实有这种问题,一般主键为整形自增,父ID为可空,这时,在添加时如果不为ID赋值,结果就会出错。 错误: 无法确定依赖操作的有效顺序。由于外键约束、模型要求或存储生成的值,因此可能存在依赖关系。 解决: 结果: 回到目 阅读全文
posted @ 2016-03-25 14:57 张占岭 阅读(3948) 评论(3) 推荐(1) 编辑
摘要:回到目录 我为什么会来 在传统的大型系统设计中,数据库建模是个比开发更早的环节,先有数据库,然后是ORM模型,最后才是开发程序,而这种模型在EF出现后发生了转变,而且有可能将来会被code first取代,因为你的关系型数据库没有必要定死,你在部署网站时,没人愿意先建立一大堆SQL语句,谁都愿意在I 阅读全文
posted @ 2016-03-02 13:58 张占岭 阅读(5974) 评论(2) 推荐(1) 编辑
摘要:回到目录 Cannot attach the file as database这个异常是在EF的code frist里经常出现的,解决方法很简单,只要重新启动一下V11实例即可。 CMD> sqllocaldb.exe stop v11.0 LocalDB instance "v11.0" stop 阅读全文
posted @ 2016-02-22 11:54 张占岭 阅读(1665) 评论(2) 推荐(0) 编辑
摘要:回到目录 这个在SQL2005之后最见的一种分页方式,也是Linq默认生成的执行分页的方法(skip,take),当然在性能上小数量没有问题,在数据达到百万时会很慢,这是我们要清楚的,有时我们在LINQ环境下也需要分页写SQL,这时如何去分布就成为了一个很不好处 理的问题,所以大叔还是把准备的分页代 阅读全文
posted @ 2016-01-18 08:56 张占岭 阅读(1258) 评论(3) 推荐(0) 编辑
摘要:回到目录在进行统计时,尤其是按月进行统计,由于我们采用的时间是一个2015-12-12日这种,所以在linq你无法进行拆分,你拆分了在发到SQL时也会报错,因为SQL那边更新不需要你.net的方法,人家SQL只认自己的方法,哈哈,这也是正常的,为了解决这个问题,我们有时也需要使用纯SQL,当前也是基... 阅读全文
posted @ 2016-01-15 10:58 张占岭 阅读(3147) 评论(2) 推荐(3) 编辑