• .NET MVC Spring配置及常见问题处理


    目录

    Spring.NET配置

    使用Spring.NET做数据库查询

     常见问题及处理方案

    调用时报错(oracle): 

     Could not get ADO.NET connection.

    Spring.NET配置

    1.1 在NuGet上安装图中所示Spring package包, MVC的版本根据自己的项目下载, 我这里是MVC4所以下载的Spring.Web.MVC4, 如果是5则对应更换即可, 其余两个不用动.

    1.2 打开根路径下的Web.config, 注意是根路径下, 不是Views下的.

    1.3 配置Web.Config文件

    configuration->configSections节点下插入如下内容, 直接复制粘贴即可, 其余不用动.

    1. <sectionGroup name="spring">
    2. <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core" />
    3. <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    4. <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core" />
    5. </sectionGroup>

     configuration节点下插入spring节点, 如下所示,

    你需要注意如下几个信息:

    provider: 如果你是MS Sql Server, 就填System.Data.SqlClient, 如果是Oracle则和我的一样, 不需要改, 其他数据库以此类推.

    connectionString: 写你的数据库连接字符串

    dbHelper->type: 写你的DBHelper类的FullName, 就是带命名空间的.

    SystemFactory: type也需要改成带命名空间的类, 代码已经附上了, 我这里的命名空间是: EasyFramework.Common, 所以Type是 EasyFramework.Common.SystemFactory

    1. <spring>
    2. <context>
    3. <resource uri="config://spring/objects" />
    4. </context>
    5. <objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database">
    6. <!-- 默认的数据库访问提供程序, 通过注入来完成, 这里是注入的Oracle的数据库 -->
    7. <db:provider id="oracleDbProvider" provider="System.Data.OracleClient" connectionString="这里写入你的Sql连接字符串" />
    8. <object id="dbHelper" type="这里写你的数据库帮助类, 完整路径(如: Easy.DBHelper)">
    9. <property name="DbProvider" ref="oracleDbProvider" />
    10. </object>
    11. <object id="systemFactory" type="EasyFramework.Common.SystemFactory" />
    12. </objects>
    13. <parsers>
    14. <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data" />
    15. </parsers>
    16. </spring>

     

    1. // 命名空间是: EasyFramework.Common, 所以Type是 EasyFramework.Common.SystemFactory
    2. public class SystemFactory : IApplicationContextAware
    3. {
    4. private static ILog logger = LogManager.GetLogger<SystemFactory>();
    5. // spring的IoC容器的中心接口
    6. private static IApplicationContext applicationContext;
    7. /// <summary>
    8. /// 根据config中的配置自动注入
    9. /// </summary>
    10. public IApplicationContext ApplicationContext
    11. {
    12. get
    13. {
    14. return applicationContext;
    15. }
    16. set
    17. {
    18. applicationContext = value;
    19. logger.Info("Spring 初始化成功!");
    20. }
    21. }
    22. }

     截止到这里基础的配置已经做完了, 其他的配置根据你的业务要求追加就可以了, 配置中不要写错命名空, 否则会注入失败.

    使用Spring.NET做数据库查询

     先配置DBHelper, 当然你也可以不叫DBHelper, 无所谓, 我也不喜欢叫这个, 但是为了叫起来让大家熟悉些, 所以咱们随意点.

    2.1 DBHelper应该继承自: Spring.Data.Generic.AdoTemplate, 我们大多数Sql执行方法都调用自这个类里面的.

    可以看到这个类里面有很多我们熟悉的方法, 我们不需要重写, 只需要调用即可

     我的类中重写了这两个, 一定要使用base.xxx来调用.

     2.2 随意调用执行一条查询语句

    如果顺利, 这条语句应该是能够执行成功的, 如果不顺利, 请回头对照检查, 下面我也会给出一些常见的问题和解决方案.

    object o = SystemFactory.GetDBHelper<EasyFramework.DBAccess.DBHelper>("dbHelper").ExecuteScalar("SELECT * FROM LTS_QUOTING_CERTIFICATE");

     常见问题及处理方案

    调用Sql时报错(oracle)

    Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit

    首先检查你的客户端Oracle的安装位数与远程数据库的Oracle的安装位数是否一致,

    查询Oracle安装位数方法:

    打开cmd: 执行sqlplus/onlog

    如果你是64位的, 红线中的内容应该包含64bit, 我的是32的所以没有该字眼

     

    解决方案就是打开你的IIS, 打开应用池, 选择"高级设置"

    将该选项选择与你目前设置相反的

     Could not get ADO.NET connection.

    一般这个问题只有以下几个原因:

    (1). 远程服务器连接失败, 请务必保证你的服务器数据库能够正常连接.

    (2). 数据库连接字符串错误, 请检查这个属性里的字符串是否正确, 括号, 账号密码之类的.

    (3). 如果你是除MS Sql Server以外的其他数据库请检查有没有装驱动, 比如Oracle如果你要使用System.Data.OracleClient, 则需要安装驱动.

     

    不知道为什么, 总感觉在.NET中使用Spring很奇怪, 其实有很多更好的替代方案.

  • 相关阅读:
    基于Debian搭建Hyperledger Fabric 2.4开发环境及运行简单案例
    SPL工业智能:原料与产品的拟合
    JavaScript基础测试
    排序——手撕快排
    直线联想思维、逆向联想思维、交叉联想思维,设计师一定要具备这几个思维
    STM32-初识嵌入式
    缓存的使用及常见问题的解决方案
    【算法心得】minus instead of add
    基于C#制作一个串口通信调试软件
    Zabbix 5.0 监控教程(四)
  • 原文地址:https://blog.csdn.net/a1455990364/article/details/125558206