我想实现IdbSet为我的DbContext提供一个自定义实现,它实际上用于过滤当前登录用户的数据(我正在处理多租户应用程序)。我要采用的一般想法与这篇文章非常相似:Can a DbContext enforce a filter policy?
但是,我不清楚如何使DbContext“知道”如何使用我自己的实现IDbSet的类。我很难找到关于此的文档。任何指针都会有所帮助!
TIA, -jle
答案 0 :(得分:1)
我几乎可以肯定你不能创建自己的IDbSet
实现并将其传递给实体框架。这样的实现将丢失所有与EF相关的内容,这些内容在DbSet
内部实现 - 在内部我真的意味着没有公共API来替换它。提供IDbSet
接口不是因为它应该创建自己的集合,而是因为它允许在单元测试应用程序时使用模拟集。扩展功能的唯一方法是:
DbSet
,但我担心它也无法帮助您,因为方法/属性不会被标记为virtual
。IDbSet
实现,它将包装DbSet
。这看起来是最好的机会,但您仍然可以发现DbContext
不喜欢您的新实现。我给了这个很快的尝试,但我没有成功。我的实现工作是坚持但不是查询。