C# 从数据库创建不同投影以与C一起使用的最佳实践#

C# 从数据库创建不同投影以与C一起使用的最佳实践#,c#,database,linq-to-dataset,C#,Database,Linq To Dataset,所以,我的问题是,我的数据库中有一堆相互关联的表。现在,根据用户的需求,我需要根据它们创建不同的投影 假设我有10个表,需要6个不同的投影。这些投影直接用作我使用的视图组件的数据源。基本上,到目前为止,我已经找到了两种方法来实现这一点 1) 我使用设计器创建了一个数据集,其中包含我需要的所有不同的表。然后使用Linq2DataSet创建投影,并将结果交给视图组件。 2) 我创建了一个数据集,其中包含6个自定义TableAdapter,每个投影一个,然后用它们填充datatables,并将这些表交

所以,我的问题是,我的数据库中有一堆相互关联的表。现在,根据用户的需求,我需要根据它们创建不同的投影

假设我有10个表,需要6个不同的投影。这些投影直接用作我使用的视图组件的数据源。基本上,到目前为止,我已经找到了两种方法来实现这一点

1) 我使用设计器创建了一个数据集,其中包含我需要的所有不同的表。然后使用Linq2DataSet创建投影,并将结果交给视图组件。
2) 我创建了一个数据集,其中包含6个自定义TableAdapter,每个投影一个,然后用它们填充datatables,并将这些表交给view组件

对于解决方案1,它显然更灵活,我可以更轻松地从中创建新的投影。但是,如果数据量增加,这可能会成为一个问题。
对于解决方案2,它更轻,但很难对其进行任何更改。我不期望很快会有很多变化,但灵活性总是很好的

那么,这些解决方案中哪一个更好,还有其他更好的解决方案吗

编辑:添加一些上下文

所以我想我应该举一个我正在处理的数据类型的例子。基本上,我有一个包含结果的表。结果有一个类型,它可以有一个或多个关系。例如,它们被定义为truckID、routeID或countryID

现在,根据结果的类型,我需要获取一个或多个关系。这些例子可能是卡车平均速度的结果类型,这可能与所有三个有关系,这意味着我想加入前面提到的所有表格。另一个例子是卡车交付数量的结果类型,这可能与路线和国家有关。未使用的关系始终为0或null

此外,这些案例还进一步划分为场景。这意味着我应该能够将获取要显示的数据的查询更改为只考虑给定场景


所以我的问题是,如何读取所有这些数据并适当地使用它们。我想SQL视图可能是一种选择。我对数据库访问非常陌生,因此非常感谢您的帮助。

第一个不合适,因为投影是在客户端使用LINQ完成的。第二个表可以使用,但仍然填充了6个表。从你的帖子中我了解到,你只能使用一个数据视图,因为只有一个数据视图。但我的建议是,如果您的客户向您发送它期望的投影类型的id,您可以通过定义6个视图或动态查询在数据库端使用投影。对需要的列使用水平筛选,并使用where子句进行垂直筛选


我将使用视图,因为查询外部化到DB,因此与代码中的嵌入式查询相比更容易更改。

视图确实是一个不错的解决方案。然而,我不太明白为什么第一种解决方案不合适?我想这会给我最大的灵活性,但是数据量可能会增长得太多。在客户端不必要地处理数据是不好的。对于10个表,您将有很多列,客户端的投影将要求获取所有列。