gpt4 book ai didi

c# - 有没有办法从 app.config 文件加载 Linq to SQL 的现有连接字符串?

转载 作者:行者123 更新时间:2023-11-30 16:33:48 26 4
gpt4 key购买 nike

我的 Linq to SQL 项目遇到了一个非常烦人的问题。当我在 Web 项目下添加所有内容时,一切都按预期进行,我可以告诉它使用存储在 web.config 文件中的现有连接字符串,Linq 代码直接从 ConfigurationManager 中提取。

一旦我将代码移到它自己的项目中,这一切就变得丑陋了。我已经创建了一个 app.config 文件,将连接字符串放在那里,就像它在 web.config 中一样,但是当我尝试在 IDE 中添加另一个表时,我一直强制我对连接字符串进行硬编码或创建一个设置文件,并且将它放在那里,然后使用新名称在 app.config 文件中添加一个新条目。

有没有一种方法可以将我的 Linq 代码保留在它自己的项目中,但仍然可以引用我的配置文件,而无需 IDE 不断地对连接字符串进行硬编码或创 build 置文件?我正在将我的 DAL 的一部分转换为使用 Linq to SQL,所以我想使用我们的旧代码正在使用的现有连接字符串,并将值保存在一个公共(public)位置和一个位置,而不是在一个位置点数。

手动将模式更改为 WebSettings 而不是 AppSettings 一直有效,直到我尝试添加一个新表,然后它返回到对值进行硬编码或重新创 build 置文件。我还尝试将项目类型切换为 Web 项目,然后将我的 app.config 重命名为 web.config,然后一切都按我希望的方式运行。我只是不确定将其保留为 Web 项目是否有任何缺点,因为它确实不是一个。该项目仅包含 Linq to SQL 代码和我的存储库类的实现。

我的项目布局是这样的

Website-connectionString.config-web.config (refers to connectionString.config)Middle Tier-Business Logic-Repository Interfaces-etc.DAL-Linq to SQL code-Existing SPROC code-connectionString.config (linked from the web poject)-app.config (refers to connectionString.config)

UpdateHere's an example of the code I'm talking about

Web Project

public DB() : 
base(global::System.Configuration.ConfigurationManager.ConnectionStrings["SiteSqlServer"].ConnectionString, mappingSource)
{
OnCreated();
}

非网络项目

public DB() : 
base(global::SampleProject.Data.Properties.Settings.Default.SiteSqlServer, mappingSource)
{
OnCreated();
}

每次我尝试使默认构造函数看起来像第一种方式时,一旦我对文件进行更改,它总是自动变回第二种方式,除非 DBML 在 Web 项目中。

最佳答案

我为此使用了一个技巧:

public partial class DataContext
{
partial void OnCreated()
{
this.Connection.ConnectionString =
global::System.Configuration.ConfigurationManager
.ConnectionStrings["SQLServer"].ConnectionString;
}
}

这将从当前配置管理器中读取连接字符串,这(在 ASP.Net 网站的情况下)将是 Web.config。我只是将这个部分类定义添加到定义我的 dbml 的同一个项目中。然后,使用 dbml 项目的任何其他项目只需在他们的 app.config/web.config 中定义他们的连接字符串。

关于c# - 有没有办法从 app.config 文件加载 Linq to SQL 的现有连接字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2909143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com