Jac*_*ack 1 c# asp.net performance entity-framework dbcontext
我正在构建一个在一个数据库中有30-35个表的Web应用程序.现在问题是我想将应用程序拆分为3个不同的前端(不同的团队需要不同的东西).3个不同的项目.
App1可能使用15-20个表,App2可能使用10个,App3可能使用15个.
我计划创建一个名为Models的项目,该项目具有dbContext,其中包含数据库中的所有表,并将其用于Web应用程序项目.如果我需要添加或更新数据库,我可以更新一个模型项目.
一位同事提到你应该只包括你需要的东西,所以我应该为每个web项目制作3个独立的dbcontexts,否则会因为包含不必要的表而受到性能影响.
要回答标题中的问题:不,我没有看到任何性能受到极大影响DbContext.在我工作过的一个项目中,DbContext定义时间接近一千DbSet秒,配置时间(执行调用OnConfiguring和执行的时间OnModelCreating)大约为2秒,每个实体都是通过Fluent API配置的; 所以你可以说只有35个实体的命中率可以忽略不计(如果有的话).
也就是说,无论您使用一个还是多个,DbContext都取决于您将如何使用它们.如果有明确的数据分离,你可以清楚地说"这个表只会在这里使用",而你最终不会重复DbSet,你可以将它们分开.
一位同事提到,包括不必要的表格会有性能损失
当同事说出这样的话时,你告诉他们要么用证据支持这种说法,要么闭嘴.说真的,世界上已经有足够的货物崇拜节目了.它与强制您使用的同事相同,String.Empty因为它比使用更快"",因为他们在博客上读过一次.提示:事实并非如此.
对所听到的每一个主张进行批评是非常健康的,特别是如果这种主张不是基于任何现实.
是的,加载具有更多属性的类型将需要更多的磁盘I/O和更多的CPU周期.尽管如此,这将是极其微不足道的.你不会在大规模的事情上注意到这一点.*
如果你正在使用EDMX,那就变成了一个完全不同的故事,因为加载和解析5 MB的元数据会在几秒钟内增加应用程序的加载时间.*
*:是的,我正在寻找这两种声明的来源.
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |