回答

收藏

Linq-to-SQL:多少个数据上下文?

技术问答 技术问答 244 人阅读 | 0 人回复 | 2023-09-14

我有一个包含300多个表的SQL Server 2008数据库。我必须设计的应用程序是Windows Forms应用程序,.NET 3.5,C#。/ y- i# z+ m4 |* n/ D' W( |
哪种是使用Linq-to-SQL的最佳方法?+ n9 G4 j9 }# ?
我打算为每个业务实体创建一个数据上下文。
+ F" M( l) c' t' g有什么问题吗 ?
( c. P, C' X# d/ K) s$ R我需要知道这种与Linq-to-SQL配合使用的方式是否有缺点或会导致性能问题?
( h- M" g: U% K3 G谢谢。1 m* `3 j' F$ _* v/ C! R( j, S
               
- j( v; \7 B, H/ @5 x+ d解决方案:
* I) v$ f4 z1 s                ' ^3 @# t1 x6 Q! f9 F
* S% \. v+ Z  J% a: b2 M1 m: j5 M5 o
$ e% m8 `/ z. l3 S# P# K# w4 J
                每个数据库通常应该有1个单个DBML文件(=数据上下文)。当然,您不应该创建DataContext每个业务实体,因为这样做会使您失去LINQ to, }" |( u2 d" z# z+ w
SQL的大部分有用功能,例如内存事务(工作单元),延迟加载以及对多个实体进行LINQ查询。
/ L) Z3 T. S; G: {# H6 N+ w( w' h您有一个很大的模型(+300个表),这意味着很多实体。除了LINQ to
- n8 z' U8 I2 r* ^4 \( uSQL设计器外,很多实体不是什么大问题。将设计器与如此大的模型一起使用可能会很烦人。这可能是将一个域拆分为多个子域(每个DBML文件包含一个子域)的原因,但肯定不是每个实体一个。但是,请记住,您在域的边界上失去了L2S功能。: ^% `7 R' [* G% r( Q* V
过去,我曾建议一个团队将+150实体域拆分成5个DBML文件,然后将它们合并回一个DBML。编辑模型的痛苦增加了,但是使用多个DataContexts的痛苦消失了,这大大降低了他们的总体痛苦。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则