Linq to sql 使用Linq到Sql w/不同的环境/连接字符串

Linq to sql 使用Linq到Sql w/不同的环境/连接字符串,linq-to-sql,Linq To Sql,这个问题很简单,我记不得了。我们有三个环境:本地机器(每个开发人员都有一个环境)、开发环境和生产环境。连接字符串位于配置文件中(不是web.config,而是web.config指向该文件);在给定的时间只有一个处于活动状态(其他两个被注释掉;所有三个都具有相同的名称,但每个环境的值不同) 我正在使用ActiveRecord模式的基本版本来处理数据访问(即Linq生成的CS文件中的静态GetByProperty方法)。为了确保我们所有人都可以使用Linq类而无需与设计器打交道,我所要做的就是在我

这个问题很简单,我记不得了。我们有三个环境:本地机器(每个开发人员都有一个环境)、开发环境和生产环境。连接字符串位于配置文件中(不是web.config,而是web.config指向该文件);在给定的时间只有一个处于活动状态(其他两个被注释掉;所有三个都具有相同的名称,但每个环境的值不同)


我正在使用ActiveRecord模式的基本版本来处理数据访问(即Linq生成的CS文件中的静态
GetByProperty
方法)。为了确保我们所有人都可以使用Linq类而无需与设计器打交道,我所要做的就是在我新建
数据上下文时用连接字符串(例如
ConfigurationManager.AppSetting[“TheConnectionString”]
)传入该配置设置,对吗?我将采用为每个请求更新上下文的方法;是否有任何问题(除了DRY,因为我会在每个方法中重复整个连接字符串)我应该注意每次传递连接字符串,或者这是标准的操作过程?

您选择了我最不喜欢的两件事(ActiveRecord和LINQ to SQL)。;-)不管怎样,您可以将代码移动到工厂方法(或类似方法)以避免干问题,如果这特别会让您感到不舒服的话。您可能需要进行一些重构和重新架构,但您可以稍后解决这个问题


至于将连接字符串更改为特定于环境的,这是相当标准的操作过程,无论您使用的是LINQ、数据集、EF还是其他。实际持久存储的位置是一个配置问题。

是的,我更喜欢NHibernate+存储库模式,但这对于工作来说“太复杂”,并且引入了一些外来主题。我很幸运,我得到了使用LINQ的许可。。它将是存储过程和数据集X-(LINQ是一个伟大的抽象。我喜欢迭代对象,这是它的优势。作为一种数据访问技术,它主要是由于EF团队“落后”而拼凑在一起的,我希望它会死得很惨;-)然而,我理解“获得批准的运气”问题。我完全赞成尽可能多地使用配置,因为太多人硬编码(应该死得很惨吗?)