【问题标题】:Spring.net to structuremap dependency injection conversionSpring.net 到 structuremap 依赖注入转换
【发布时间】:2011-01-26 11:06:40
【问题描述】:

早安,

如何将此 spring 配置转换为结构图配置。我有这个 spring.net 配置。

<db:provider id="DbProvider" 
      provider="System.Data.SqlClient" 
      connectionString="Data Source=(local);Database=Spring;User ID=springqa;Password=springqa;Trusted_Connection=False"/>

  <object id="adoTemplate" type="Spring.Data.Core.AdoTemplate, Spring.Data">  
    <property name="DbProvider" ref="DbProvider"/>                
  </object>

</objects>

我的转化是这样的,

For<Spring.Data.Core.AdoTemplate>().Use<Spring.Data.Core.AdoTemplate>().Configure.WithProperty("DBProvider").EqualTo(??????);

如何/从哪里获取 DBProvider 属性的实例?在 Spring .Net 中,它是在 xml 标记中定义的,但我不知道这是如何在结构图上完成的。

有没有人遇到过同样的问题并找到了解决方案?请帮忙。

【问题讨论】:

    标签: c# .net dependency-injection structuremap spring.net


    【解决方案1】:

    不是我曾经使用过结构映射,而是 Spring.NET 提供程序名称“System.Data.SqlClient”在 Spring.NET 1.3.1 中映射到下面发布的 xml 配置,如 Spring.NET 源代码中可用的那样。您可以根据需要提取信息片段(可能类型名称就是您要查找的名称)。

    <object id="SqlServer-2.0" type="Spring.Data.Common.DbProvider, Spring.Data" singleton="false">
            <constructor-arg name="dbMetaData">
                <object type="Spring.Data.Common.DbMetadata">
                    <constructor-arg name="productName" value="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0" />
                    <constructor-arg name="assemblyName" value="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                    <constructor-arg name="connectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                    <constructor-arg name="commandType" value="System.Data.SqlClient.SqlCommand, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                    <constructor-arg name="parameterType" value="System.Data.SqlClient.SqlParameter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                    <constructor-arg name="dataAdapterType" value="System.Data.SqlClient.SqlDataAdapter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                    <constructor-arg name="commandBuilderType" value="System.Data.SqlClient.SqlCommandBuilder, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                    <constructor-arg name="commandBuilderDeriveParametersMethod" value="DeriveParameters"/>
                    <constructor-arg name="parameterDbType" value="System.Data.SqlDbType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                    <constructor-arg name="parameterDbTypeProperty" value="SqlDbType"/>
                    <constructor-arg name="parameterIsNullableProperty" value="IsNullable"/>
                    <constructor-arg name="parameterNamePrefix" value="@"/>
                    <constructor-arg name="exceptionType" value="System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
                    <constructor-arg name="useParameterNamePrefixInParameterCollection" value="true"/>
            <constructor-arg name="useParameterPrefixInSql" value="true"/>     
                    <constructor-arg name="bindByName" value="true"/>
                    <!-- this is only true for .net 1.1 kept it here just in case we want to revert back to this strategy for
                 obtaining error codes-->
                    <constructor-arg name="errorCodeExceptionExpression" value="Errors[0].Number.ToString()"/>
    
            <!-- TODO select form system db all errors that have 'incorrect syntax' at the start of the error string-->
            <property name="ErrorCodes.BadSqlGrammarCodes">
              <value>156,170,207,208</value>
            </property>
            <property name="ErrorCodes.PermissionDeniedCodes">
              <value>229</value>
            </property>
            <property name="ErrorCodes.DataIntegrityViolationCodes">
              <value>544,2627,8114,8115</value>
            </property>
            <property name="ErrorCodes.DeadlockLoserCodes">
              <value>1205</value>
            </property>
                </object>
            </constructor-arg>
    
        </object>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多