Linq to Sql查询重用

时间:2012-07-02 09:13:18

标签: c# .net sql linq-to-sql

假设我们有一个视图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中而不是在数据库中执行连接?我应该在数据库上下文中手动创建基类还是什么?

1 个答案:

答案 0 :(得分:0)

最后创建一个包含V1属性的接口,然后从中继承V1V2声明(使用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.V1myDataContext.V2个实体集并投射结果。不知道这是不是最好的解决方案,但它很干,我很高兴。