我们的每个表都有列 TenantID。通常我们使用 NHibernate 过滤器对数据进行切片。对于实体框架模型,我们需要相同的内容。
我们将使用此模型作为 ADO.NET 数据服务的源,因此最好使用无基础结构属性(如 TenantID)的模型。从代码方面,我们静态地知道 TenantID 线程。
UPD:我找到了QueryInterceptorAttribute,正在调查我是否可以使用它。
我们的每个表都有列 TenantID。通常我们使用 NHibernate 过滤器对数据进行切片。对于实体框架模型,我们需要相同的内容。
我们将使用此模型作为 ADO.NET 数据服务的源,因此最好使用无基础结构属性(如 TenantID)的模型。从代码方面,我们静态地知道 TenantID 线程。
UPD:我找到了QueryInterceptorAttribute,正在调查我是否可以使用它。
您可能想研究使用 T4 模板。这里有一个很好的例子,它只需要稍微修改一下。
我还使用匿名类型从实体框架对象“切片”属性。
//assuming EFObject has Foo, Bar and Baz properties
var slicedObject = new { Foo = EFObject.Foo, Bar = EFObject.Bar }
它很简单,但对于复杂的类来说可维护性有问题。