实体框架 - 实现IDbSet

时间:2011-06-03 13:05:53

标签: entity entity-framework-4.1

我想实现IdbSet为我的DbContext提供一个自定义实现,它实际上用于过滤当前登录用户的数据(我正在处理多租户应用程序)。我要采用的一般想法与这篇文章非常相似:Can a DbContext enforce a filter policy?

但是,我不清楚如何使DbContext“知道”如何使用我自己的实现IDbSet的类。我很难找到关于此的文档。任何指针都会有所帮助!

TIA, -jle

1 个答案:

答案 0 :(得分:1)

我几乎可以肯定你不能创建自己的IDbSet实现并将其传递给实体框架。这样的实现将丢失所有与EF相关的内容,这些内容在DbSet内部实现 - 在内部我真的意味着没有公共API来替换它。提供IDbSet接口不是因为它应该创建自己的集合,而是因为它允许在单元测试应用程序时使用模拟集。扩展功能的唯一方法是:

  • 继承DbSet,但我担心它也无法帮助您,因为方法/属性不会被标记为virtual
  • 创建自定义IDbSet实现,它将包装DbSet。这看起来是最好的机会,但您仍然可以发现DbContext不喜欢您的新实现。我给了这个很快的尝试,但我没有成功。我的实现工作是坚持但不是查询。
相关问题