1

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

4

1 回答 1

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实体集并转换结果。不知道这是否是最好的解决方案,但它很干燥,我很高兴。

于 2012-07-02T12:40:22.937 回答