目前项目中使用到的EntityFramework中几种操作小结,先标记下。没有详细介绍,后续有空的话再补充一些并完善一下。

列中加入RowVersion时间戳

public class Product
    {
        public
int Id { get; set; }
        public
string Name { get; set; }

[Timestamp]
        public
Byte[] RowVersion { get; set; }
    }

查询中加入RowVersion比较

  1. 编写扩展函数

internal
static
class
EntityFrameworkHelper
    {
        public
static
int Compare(this
byte[] b1, byte[] b2)
        {
            throw
new
NotImplementedException("This is only for linq to sql");
        }
    }

  1. 用扩展函数查询

db.Products.Where(i => i.RowVersion.Compare(version) > 0).ToList();

乐观锁

public
class
Product

    {
        public
int Id { get; set; }
        public
string Name { get; set; }

[Timestamp, ConcurrencyCheck]
        public
Byte[] RowVersion { get; set; }
    }

带过滤条件的DBSet

  1. 添加Can a DbContext enforce a filter policy?一文中的FilteredDbSet,
  2. 修改DbContext,使用FilteredDbSet替换默认的DbSet

public
IDbSet<Product> Products { get { return
new
FilteredDbSet<Product>(this, i=>i.IsRemoved == false); } }

标记删除

继承FilteredDbSet,重载其删除函数

public
interface
IflagRemoveObject
    {
        bool IsRemoved { get; set; }
    }

class
FlagRemoveDbSet<T> : FilteredDbSet<T> where
T : class, IflagRemoveObject
    {
        public
override
T Remove(T entity)
        {
            entity.IsRemoved = true;
            return entity;
        }
    }

单元测试:

  1. 打桩DbSet:FakeDbSet
  2. DbContext的封装

最新文章

  1. 在本机搭建SVN服务器
  2. WordPress基础:Gravatar头像修正
  3. Effective Java 16 Favor composition over inheritance
  4. Discuz X1.5 利用添加好友处存储xss进行蠕虫worm扩散
  5. php类 静态变量赋值 static $name=&quot;abc&quot;
  6. AndroidStudio push代码到github
  7. Oracle / PLSQL函数 - NUMTODSINTERVAL和NUMTOYMINTERVAL
  8. Autoware(2)—加载地图数据
  9. 流程控制语句(if switch)
  10. pyinstaller
  11. 在java中获取URL的域名或IP与端口
  12. 理解Express express.static 和 __direname 及 __firename的含义
  13. C#在Winform程序中显示QQ在线状态
  14. 服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站
  15. mysql知识点(二)
  16. leetcode-单词探索
  17. 无需序列号安装Photoshop CS6
  18. StarkSoft题库管理系统
  19. centos7下安装oracle11gR2的详细步骤
  20. ubantu启动盘制作

热门文章

  1. python常用运维脚本实例【转】
  2. mysql触发器(Trigger)简明总结和使用实例
  3. ~Delphi const 杂谈~
  4. Expert C Programming 阅读笔记(CH2)
  5. css 字符图标浏览器自带
  6. js的浮点(小数)数+-*/
  7. openldap quick start guide
  8. Mysql Federated Server 示例
  9. 【转载】retrofit 2 源码解析
  10. nyoj 214 单调递增子序列(二)