假设我们有一个视图V1和V2,声明如下:
create view V2 as
select V1.*, V2.C1, V2.C2, V2.C3
from V1
join V2 on V1.Key = V2.Key
where bla-bla
因此V2缩小了V1的结果集并添加了一些连接。并且在C#中有一个检索例程
IEnumerable<V1> GetData(MyFilter filter, MySortOrder order) {}
我想重用V2。是否可以不在L2S中而不是在数据库中执行连接?我应该在数据库上下文中手动创建基类还是什么?
答案 0 :(得分:0)
最后创建一个包含V1
属性的接口,然后从中继承V1
和V2
声明(使用sqlmetal.exe生成)(感谢部分类!):
public interface IV {
int P1 {get;set;}
int P2 {get;set;}
}
public partial class V1: IV { }
public partial class V2: IV { }
然后修改GetData()
:
IEnumerable<IV> GetData(Func<MyDataContext, IEnumerable<IV>> MyFilter filter, MySortOrder order) {}
所以我可以传递myDataContext.V1
或myDataContext.V2
个实体集并投射结果。不知道这是不是最好的解决方案,但它很干,我很高兴。