我的团队正在使用 Entity Framework 4.3.0 - Code Only 和 POCO 类作为我们的 ORM。现在我们使用 DBSets of Classes 来访问我们的“表”
Public Property Customers As DbSet(Of Customers)
但是我们经常根据 LINQ 中的 IsDeleted 列进行软删除,并相应地过滤我们的选择语句:
Dim LiveCustomers =
    From C In EM.Customers
    Where C.DeleteFlag = False
我真正想做的是,而不是编写每个查询来包含此过滤器,而是创建一些提供过滤集的较低级别的属性(可能在我们继承的 DbContext 级别),同时保持强类型。
我试过这个:
Public Property Customers As DbSet(Of Customer)
Public Property Customers_Live As DbSet(Of Customer)
    Get
        Return From C In Customers
                Where C.DeleteFlag = False
    End Get
    Set(value As DbSet(Of Customer))
        Customers = value
    End Set
End Property
然而,这给了我这个错误:
不支持每种类型的多个对象集。对象集“Customers”和“Customers_Live”都可以包含“ _ _.Customer”类型的实例。
对谷歌的快速检查产生了这个有希望的结果(如何:使用每种类型的多个实体集查询对象)但是在更新我的连接字符串之后,我仍然遇到同样的错误。
  <add name="EntityManager"
       providerName="System.Data.SqlClient"
       connectionString="
          Data Source=xxxxxx;
          Initial Catalog=xxxxxx;
          User Id=xxxxxx;
          Password=xxxxxx;
          MultipleActiveResultSets=True"/>
所以我的问题是,我怎样才能有效地创建一个允许我应用过滤的 LINQ 视图,而不会对上游使用产生太大影响?