小编Ber*_*tie的帖子

注入应用程序配置的最佳方式

好吧,我正在进入这个梦幻般的网站,并提出了将配置设置注入应用程序组件的正确方法的问题.因此,概述是:我有一个用C#.Net 3.5编写的应用程序.它由3个程序集组成 - 核心,数据和服务.数据和服务程序集需要从app.config检索的设置,这可以通过设置文件完成,例如.

代码:

public static String RequestQueueConnectionString
{
    get { return ConnectionSettings.Default.RequestQueueConnectionString; }
}
Run Code Online (Sandbox Code Playgroud)

配置:

<applicationSettings>
  <MyNamespace.Data.ConnectionSettings>
    <setting name="RequestQueueConnectionString" serializeAs="String">
    ...
Run Code Online (Sandbox Code Playgroud)

现在,程序集都是使用StructureMap for IoC进行设置的 - 我认为应该提供我正在寻找的答案,但我只是看不到它!

IoC:

public static void ConfigureStructureMap(IContainer container)
{
    container.Configure(x => ...
    ...
Run Code Online (Sandbox Code Playgroud)

我希望能够做的是注入一个已经填充到IoC容器中的配置类,以便这些设置用于该程序集,而不是设置文件/ app.config中指定的那些设置.所以也许:

public static void ConfigureStructureMap(IContainer container, MyConfigClass config)
{
    container.Configure(x => x.For<DataConfig>()
                              .Singleton()
                              .Use ???
    ...
Run Code Online (Sandbox Code Playgroud)

我希望我在这里提供了足够的细节 - 如果我没有,请原谅一个新手,请让我知道还有什么有助于回答这个问题!

c# configuration inversion-of-control

10
推荐指数
1
解决办法
4666
查看次数

DataContext.ExecuteQuery <TEntity>和Null值


所以我的问题是这个.当使用Data Context ExecuteQuery(字符串查询,params object []参数)(这里)时,我无法以任何形式或形式传递null.启动此操作的参数是SQL nvarchar参数,需要允许空值.

我在stackoverflow上阅读了这篇文章,其中"使用DBNull.Value"标记为答案 - 所以我尝试了,没有任何东西(所以想知道如果它不起作用的答案,如果它不起作用??!).

这是我试图运行的示例代码(注意,这只是为了测试这个概念):

var db = new Test1DataContext(Properties.Settings.Default.TestConnectionString);
var query = "EXEC UpInsertTest4 {0}, {1}";

// Works fine
var list1 = new List<object> { 1, "1" };
db.ExecuteQuery<UpInsertTest4Result>(query, list1.ToArray());

// Doesn't work
var list2 = new List<object> { 1, DBNull.Value };
db.ExecuteQuery<UpInsertTest4Result>(query, list2.ToArray());
Run Code Online (Sandbox Code Playgroud)

以下是我收到的各种错误:

null                : A query parameter cannot be of type 'System.Object'.
default(string)     : A query parameter cannot be of type 'System.Object'.
DBNull.Value        : Unexpected type code: …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-sql

4
推荐指数
1
解决办法
7844
查看次数