Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拥有大型数据库上下文是否会影响性能?_C#_Asp.net_Performance_Entity Framework_Dbcontext - Fatal编程技术网

C# 拥有大型数据库上下文是否会影响性能?

C# 拥有大型数据库上下文是否会影响性能?,c#,asp.net,performance,entity-framework,dbcontext,C#,Asp.net,Performance,Entity Framework,Dbcontext,我正在构建一个web应用程序,在一个数据库中有30-35个表。现在的问题是,我想把应用分成3个不同的前端(不同的团队需要不同的东西)。3个不同的项目 App1可能使用15-20个表,App2可能使用10个表,App3可能使用15个表 我计划制作一个名为Models的项目,该项目具有数据库中所有表的dbContext,并将其用于web应用程序项目。如果我需要添加或更新数据库,我可以只更新一个模型项目 一位同事提到,您应该只包含您需要的内容,所以我应该为每个web项目创建3个单独的DBContext

我正在构建一个web应用程序,在一个数据库中有30-35个表。现在的问题是,我想把应用分成3个不同的前端(不同的团队需要不同的东西)。3个不同的项目

App1可能使用15-20个表,App2可能使用10个表,App3可能使用15个表

我计划制作一个名为Models的项目,该项目具有数据库中所有表的dbContext,并将其用于web应用程序项目。如果我需要添加或更新数据库,我可以只更新一个模型项目


一位同事提到,您应该只包含您需要的内容,所以我应该为每个web项目创建3个单独的DBContext,否则包含不必要的表会影响性能。

我认为从性能角度看这不是问题,但从维护角度看,我肯定会遇到挑战

我经历过类似的情况,我们在不同的功能中共享了一个基于edmx的数据模型。但是,每个功能只关注特定数量的表


有了这个问题,每当我们需要更改特定于任何功能的任何表时,我们就开始面临这个问题,这些功能要求我们接触单个数据模型,并且在签入期间还导致不必要的合并冲突

我认为从性能角度看这不是一个问题,但从维护角度看,我确实看到了挑战

我经历过类似的情况,我们在不同的功能中共享了一个基于edmx的数据模型。但是,每个功能只关注特定数量的表

有了这个问题,每当我们需要更改特定于任何功能的任何表时,我们就开始面临这个问题,这些功能要求我们接触单个数据模型,并且在签入期间还导致不必要的合并冲突

一位同事提到,[…]如果包含不必要的表,将导致性能下降

当同事们这样说的时候,你告诉他们要么用证据支持这种说法,要么闭嘴。说真的,世界上已经有足够多的货运邪教节目了。这与同事强制你使用
String.Empty
是一样的,因为这比使用
要快,因为他们在博客上读过一次。提示:不是

对你听到的每一个说法都进行批评是非常健康的,尤其是如果这个说法没有任何现实依据的话

是的,加载具有更多属性的类型将需要更多磁盘I/O和更多CPU周期。但这将是极其微不足道的。你不会注意到这一点*

不过,如果您使用的是EDMX,情况就完全不同了,因为加载和解析5 MB的元数据会增加应用程序加载时间的秒数*

*:是的,我正在寻找这两种说法的来源

一位同事提到,[…]如果包含不必要的表,将导致性能下降

当同事们这样说的时候,你告诉他们要么用证据支持这种说法,要么闭嘴。说真的,世界上已经有足够多的货运邪教节目了。这与同事强制你使用
String.Empty
是一样的,因为这比使用
要快,因为他们在博客上读过一次。提示:不是

对你听到的每一个说法都进行批评是非常健康的,尤其是如果这个说法没有任何现实依据的话

是的,加载具有更多属性的类型将需要更多磁盘I/O和更多CPU周期。但这将是极其微不足道的。你不会注意到这一点*

不过,如果您使用的是EDMX,情况就完全不同了,因为加载和解析5 MB的元数据会增加应用程序加载时间的秒数*


*:是的,我目前正在寻找这两种说法的来源。

回答标题中的问题:不,我没有看到任何超大
DbContext
s的性能受到影响。在我工作过的一个项目中,
DbContext
被定义为将近1000个
DbSet
s,配置时间(调用
onconfigurang
OnModelCreating
所需的时间)大约为2秒,每个实体都是通过Fluent API配置的;因此,你可以说,只有35个实体的命中率可以忽略不计(如果有的话)


也就是说,是否使用一个或多个
DbContext
取决于您将如何使用它们。如果有一个清晰的数据分离,您可以清楚地说“这个表将只在这里使用”,并且不会重复
DbSet
,那么您可以将它们分开。

回答标题中的问题:不,我没有看到超大
DbContext
的性能受到任何影响。在我工作过的一个项目中,
DbContext
被定义为将近1000个
DbSet
s,配置时间(调用
onconfigurang
OnModelCreating
所需的时间)大约为2秒,每个实体都是通过Fluent API配置的;因此,你可以说,只有35个实体的命中率可以忽略不计(如果有的话)


也就是说,是否使用一个或多个
DbContext
取决于您将如何使用它们。如果有一个清晰的数据分离,你可以清楚地说“这个表将只在这里使用”,并且你不会重复
DbSet
,你可以将它们分开。

我不认为会有任何不可忽略的性能影响,但由于不同的原因,分离仍然是好的。30-35个表是一个相当小的数字,正如我使用
DbContext
处理数百个(接近千个)表一样。当配置上下文时,性能影响(如果有)将发生在首次初始化时