C# 实体框架:映射SQL server中的现有视图或通过LINQ重新创建视图?

C# 实体框架:映射SQL server中的现有视图或通过LINQ重新创建视图?,c#,entity-framework,linq,C#,Entity Framework,Linq,我正在创建一个软件来处理现有SQL Server数据库上的数据(我无法更改)。 我正在使用visualstudio使用WPF和MVVM框架在C#中开发我的应用程序。 本质上,我的程序的主要目的是从数据库的几个表中收集数据,并以有意义的方式将其呈现给用户。我不想简单地在表中显示数据,而是收集分布在多个表中的信息,并以某种方式进行聚合。 为此,我已经在数据库中创建了几个视图(使用SMS),其中一些相当复杂 我的问题是:我应该在Entity Framework中映射这些视图并使用创建的POCO类作为D

我正在创建一个软件来处理现有SQL Server数据库上的数据(我无法更改)。 我正在使用visualstudio使用WPF和MVVM框架在C#中开发我的应用程序。 本质上,我的程序的主要目的是从数据库的几个表中收集数据,并以有意义的方式将其呈现给用户。我不想简单地在表中显示数据,而是收集分布在多个表中的信息,并以某种方式进行聚合。 为此,我已经在数据库中创建了几个视图(使用SMS),其中一些相当复杂

我的问题是:我应该在Entity Framework中映射这些视图并使用创建的POCO类作为Datagrid的源,还是应该通过LINQ查询重新创建这些视图?其次,考虑到数据网格自然是只读的,我可以使用匿名类型的列表作为数据网格的源吗


谢谢

首先,如果您的视图没有性能问题,您应该将视图映射到POCO。您不需要重新创建控制盘


其次,您可以将匿名类型的集合绑定到DataGrid的源,但匿名类型绑定有自动生成列的限制。

Linq vs db view取决于需求。在数据库上定义视图可能会提高性能,但就我个人而言,我不喜欢将业务逻辑(视图可以被视为业务逻辑)放入数据库中—我更喜欢将其放在应用程序中。如果有多个直接访问数据库的应用程序需要相同的信息,则视图更有意义。感谢您的反馈!谢谢,这真的很有帮助!