2013-02-27 132 views
1

我有一个类库,具有域对象(基于LINQ的对象,在.net 4.0)。 我想让这个库为它自己的app.config使用连接字符串。覆盖dll配置

也存在一些问题:继设置使用的模型 :ApplicationSettingsBase,我创建了一个 包装应该从app.config中读取设置。但是,与模型不同,我提供默认值。 的问题是,其性能应该从app.config中加载数据

internal sealed class ApplicationSettings : ApplicationSettingsBase 
    { 
    // other properties 

     [SpecialSetting(SpecialSetting.ConnectionString)] 
     [global::System.Configuration.DefaultSettingValueAttribute("Server=.;Database=RFPLUSSTD;User Id=SYSADM;Password=SYSADM;")] 
     public string MainConnectionString 
    { 
    get { return (string)this["MainConnectionString"]; } 
    } 

//其他属性 }

in app.config: 
<connectionStrings> 
<add name="MainConnectionString" 
connectionString="..." 
providerName="System.Data.SqlClient" /> 
</connectionStrings> 

现在,这也不行...... 我试着将conn字符串的名称设置为完全限定的名称,如 namespace.class.property,但可用。

  • 我不想使用默认设置类,通过dbml的使用,因为它 编译设置:d和无需重新编译我不能改变他们...
  • 我已经使用应用程序设置类的项目中的不同模型 1.1,但我认为3.5已经成长到足以把自己的对象, 工作..

那么,为什么不工作,我怎样才能使它工作?

谢谢

+0

哪个项目正在加载连接字符串以及它如何加载它?还有,你如何修改项目A中的连接字符串? – Justin 2013-02-27 09:41:15

+0

您可能需要提供更多详细信息。如果这是一个使用类似于实体框架的项目,那么在实例化datacontext时,会发现有不同的构造函数来设置连接字符串。 – Paddy 2013-02-27 09:41:56

+0

是的,它是一个asp.net应用程序,B项目使用ConnString.Settings文件来设置默认的连接字符串,但是它被编译,A项目不能再修改connString。 – 2013-02-27 10:01:01

回答

1

你需要确保你在文件系统权限进行更改。我希望你已经考虑过了。如果您确定您更改了配置文件,并且它只是带来了默认设置,那么它可能是从输出bin文件夹中加载配置文件,而不是在项目根目录中。如果您确定修改失败,请发布错误消息。

更新时间:

杰克您好,我想与您的代码的主要问题是,它是创建的applicationSettings新的类实例每次,如果设置在用户范围,你将有空值,然后它每次都会返回默认值。

您可以使用内置的Settings类轻松完成此操作。默认情况下,只能在装配内访问设置,内部密封部分分类设置(在Settings.Designer.cs)。如果将其更改为公开密封,您将可以从任何装配中访问“设置”,接下来您必须将设置保持为“应用程序作用域”而不是“用户作用域”。一旦你完成了这两个,你可以检索和保存没有任何问题。

+0

看看这个视频得到一些想法,当然,它有足够的权限。当运行应用程序时,配置文件位于bin文件夹的根目录下,它显示默认的connString,不是我的配置 – 2013-02-28 09:09:32

+0

请参阅更新 – 2013-02-28 12:43:42

+0

它是不涉及到内部密封的部分类设置更改为公共。 – 2013-03-01 01:21:19