.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节点下插入如下内容, 直接复制粘贴即可, 其余不用动.

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

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

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

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

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

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

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

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

 

    // 命名空间是: EasyFramework.Common, 所以Type是 EasyFramework.Common.SystemFactory 
    public class SystemFactory : IApplicationContextAware
    {
        private static ILog logger = LogManager.GetLogger<SystemFactory>();
        // spring的IoC容器的中心接口
        private static IApplicationContext applicationContext;

        /// <summary>
        /// 根据config中的配置自动注入
        /// </summary>
        public IApplicationContext ApplicationContext 
        {
            get 
            { 
                return applicationContext; 
            }
            set
            {
                applicationContext = value;

                logger.Info("Spring 初始化成功!");
            }
        }
    }

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

使用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很奇怪, 其实有很多更好的替代方案.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程通过实际项目融入常用开发技术架构,讲授风格独特,提供详细上课日志及答疑,赠送配套的项目架构源码注释详细清晰且表达通俗,均能直接在实际项目中应用,正真的物超所值,价格实惠任务作业:综合运用《C#/.Net企业级系统架构设计实战精讲教程》课程所学知识技能设计一个学生成绩管理系统的架构。要求:1.系统基于MVC的三层架构,各层单独建不同的解决方案文件夹。2.采用Model First开发方式,设计架构时只需要设计学生表(TbStudent)和课程表(TbCourse)。学生表必须有的字段是ID、stuName、age;课程表必须有的字段是ID、courseName、content。3.数据访问层采用Entity Framework或NHibernate来实现,必须封装对上述表的增删改查方法。4.必须依赖接口编程,也就是必须要有数据访问层的接口层、业务逻辑层的接口层等接口层。层层之间必须减少依赖,可以通过简单工厂或抽象工厂。5.至少采用简单工厂、抽象工厂、Spring.Net等技术中的2种来减少层与层之间的依赖等。6.封装出DbSession类,让它拥有所有Dal层实例和SaveChanges方法。7.设计出数据访问层及业务逻辑层主要类的T4模板,以便实体增加时自动生成相应的类。8.表现层要设计相关的控制器和视图来验证设计的系统架构代码的正确性,必须含有验证增删改查的方法。9.开发平台一定要是Visual Studio平台,采用C#开发语言,数据库为SQL Server。10.提交整个系统架构的源文件及生成的数据库文件。(注意: 作业需写在CSDN博客中,请把作业链接贴在评论区,老师会定期逐个批改~~)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值