LINQ to SQL:单个或多个.dbml(Sprocs)

时间:2010-07-31 00:03:50

标签: linq-to-sql

我已经阅读了关于单个vs多个dbml但它是面向使用表但我的问题非常特定于使用sproc 多个dbmls我有大约10个查找sprocs和其他我有getList /插入/更新/删除....列表正在疯狂增长,并且很难关注它,我很容易花费大量时间扫描这些内容......

如果仅使用sprocs

是否可以拥有多个dbm?所以我打算有两个单独的dbmls 1)查找 2)GetLists / Insert / Delete / Update

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如果您有多个DBML,我不相信您可以共享DataContexts。我还认为,如果你有两个DataContexts,它们默认不共享相同的连接,所以你更有可能以某种使用模式推广到分布式事务。

所以我建议不要使用多个DBML文件。如果您真的想要这种功能,请升级到Entity Framework 4.0,据我所知,它允许您拥有共享相同DataContext的多个EDMX文件。

答案 1 :(得分:1)

我最近遇到了一个情况,我有一个库项目,它对数据库中的某些表执行操作。我使用SqlMetal生成一个DataContext代码文件(我没有打扰dbml文件,虽然我认为这不会受到伤害)。

然后我构建了一个使用此库的应用程序。此应用程序在与库相同的表上执行操作,但还添加了其他几个表(它们引用了库使用的表或相互引用)。我使用SqlMetal为应用程序生成DataContext代码文件。所以,我现在有两个不同的DataContexts用于同一个数据库。

当我把所有东西放在一起时,我有点担心,但它有点像魅力。尽管库DataContext和app DataContext都使用不同的连接对象访问同一个数据库(但具有相同的连接字符串),但没有明显的问题。

这可能不是推荐的做法,它可能不适合大型应用程序,但在这种情况下不是问题。我应该注意,每次在DataContext上执行操作时都要小心,始终使用using关键字,以确保连接正确处理。

注意:我没有使用sprocs,只使用标准选择,插入,更新,删除,但我认为使用sprocs会得到类似的结果。