sb2-admin
近期开发中遇到的问题总结
最近准备把后台管理系统重新设计开发下,使用了bootstrap,在网上找了个漂亮的后台模板:sb2-admin,在使用中遇到了不少问题,总结下,以免以后忘记。
1、EF5利用NuGet升级到EF6后,一些Attribute冲突[未解决]:
我原先的数据驱动使用的是Fluent Nhibernate +Nhibernate+MSSQL2005,本来想玩玩EF的,而且现在新创建的MVC项目模板中,都会自带EF。因为EF5不支持项目模板生成Code First,所以升级到了EF6,设置到升级以后麻烦来了。“System.ComponentModel.DataAnnotations” 这个命名空间同时存在于2个dll中,原先我的想法很简单,我不引用就好了,可删除引用后,还是提示冲突。后来我想可能是webconfig或者package中有问题,可查了半天还是没有问题。群里的朋友说是缓存的问题,重启了iisexpress,重启了电脑,都没有办法解决,实在没有办法,放弃了EF方式,还是使用了原先的数据驱动。(PS:哪位大侠有解决方案的,可以留言下,主要冲突是TableAttribute等一些标记性特性)
2、FluentNhibernate 不支持存储过程
一直以为没有使用FN进行存储过程的操作,这次因为后台首页想统计下数据,就利用了存储过程,但在使用中却发现FN目前还不支持存储过程(点击查看官方),没有办法,只能利用Fluent Configuration和HBM Configuration混合的映射方式。
这里要注意的是:
a)存储过程返回的数据,最好重新定义一个class,并且进行映射(可以使用FN或者HDM方式)
b)把新定义的class和映射的hbm文件,放到你的Model层,这是为了方便以后的管理。
c)映射存储过程的hdm文件名,以返回类型的名称命名。(如果返回的class命名为:DataResult,hbm的文件名为:DataResult.hbm.xml)
class:
public class TravelDefaultData
{
public virtual int UserCount { get; set; } public virtual int OrderCount { get; set; } public virtual int LineCount { get; set; } public virtual int CrusiseCount { get; set; }
}
hbm:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Travel.Domain" namespace="Bus.Travel">
<sql-query name="GetTravelData">
<return class="TravelDefaultData">
<return-property column="usercount" name="UserCount" />
<return-property column="ordercount" name="OrderCount" />
<return-property column="linecount" name="LinCrusiseCount" />
</return> EXEC [GetTravelData] :userStartDate, :orderStartDate, :lineStartDate, :crusiesStartDate </sql-query>
</hibernate-mapping>
TravelDefaultData的映射,可以参考这里。
最后记得配置下混合映射:
var db = Fluently.Configure()
.Database(GetSqlConfig())
.Mappings(a =>
{
a.FluentMappings.AddFromAssemblyOf<AreaMap>();
a.HbmMappings.AddClasses(typeof(TravelDefaultData));
});
return db.BuildSessionFactory();
配置以后就能按照NHibernate的方式进行使用了。
3、在使用Web Api的时候,返回类型序列化冲突:
因为用的新模板很炫,想把数据请求都使用Web Api来进行,但在使用的时候,返回的json数据中,都返回了<字段名>k_BackingField,这下傻了,查看了文档,说在属性或者字段标记中,使用DataContactAttribute和DataMemberAttribute,试了以后,发觉还是不行。
后来通过Google后,才知道,原来是SerializableAttribute和DataContractAttribute之间的问题,返回Json数据的时候,使用SerializableAttribute的方式进行序列化了,所以我们必须在Application_Start时,配置下,让其在序列化的时候,仅仅使用Web Api Json serialization(仅仅支持DataContact和DataMember)。
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles); //配置在webpi的时候,仅仅支持DataContact
var serializerSettings =GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
var contractResolver =(DefaultContractResolver)serializerSettings.ContractResolver;
contractResolver.IgnoreSerializableAttribute = true;
}
写在最后
之前一直感觉用百度就足够了,但现在看来,在技术方面的查询,还是Google比较给力,这些问题很多都是靠Google解决的。最近因为Vpn到期了,所以一直没有用Google,最近实在憋不住,重新买了个Vpn,用下来不错,价格也不贵,大家可以用下:用力敲。可以利用360浏览器,进行自动切换模式,很方便。方法点击查看。
sb2-admin的更多相关文章
- Django admin定制化,User字段扩展[原创]
前言 参考上篇博文,我们利用了OneToOneField的方式使用了django自带的user,http://www.cnblogs.com/caseast/p/5909248.html , 但这么用 ...
- Django admin美化插件suit应用[原创]
前言 由于比较懒,自己弄了一个用户验证,没有自己写后台,用了django自带的user认证,并通过admin直接进行管理,但默认的admin并不漂亮,于是使用了这个django-suit插件,效果对比 ...
- OpenStack Mitaka 版本中的 domain 和 admin
OpenStack 的 Keystone V3 中引入了 Domain 的概念.引入这个概念后,关于 admin 这个role 的定义就变得复杂了起来. 本文测试环境是社区 Mitaka 版本. 1. ...
- Django Admin
//设置admin列表名称 def __str__(self): return u'%s' % self.name class Meta: db_table ="数据库的那个表" ...
- Django基础,Day3 - 编写 django admin
Django 自带了一个简易编辑后台,可以称为"内容发布器",一般是提供给站点管理员使用的,其最开始也是开发出来提供给报社编辑和发布新闻使用的. 创建超级管理员: $ python ...
- SB Admin 2 学习笔记1
需要掌握能够搭建起一个 dashboard 的能力, 因为很少有运维开发团队有专职的前端, bootstrap 也要讲个基本法. SB Admin 2, 一个免费的 bootstrap theme, ...
- 【Django】--Models 和ORM以及admin配置
Models 数据库的配置 1 django默认支持sqlite,mysql, oracle,postgresql数据库 <1>sqlite django默认使用sqlite的数据库 ...
- Django admin 权威指南(一)
版本: Django 1.10 此部分由官方文档<6.5.1 The Django admin site>翻译而来. 6.5.1.1 概览 默认情况下,使用startproject的时候, ...
- 【原创】kafka admin源代码分析
admin包定义了命令行的一些实现 一.AdminOperationException.scala 一个异常类,表示执行admin命令时候抛出的异常 二.AdminUtils.scala admin一 ...
- [django]Django站点admin支持中文显示和输入设置
正文: Django站点admin支持中文输入设置,操作如下: 1 需要确定的你的数据库的client客户端和服务端的编码设置为utf-8,如果不是,请将其设置成utf-8编码,我采用mysql,详情 ...
随机推荐
- VS2012 安装出错 :通道正在关闭
从微软官网下的安装包iso,解压后安装时总是出现 3个错误,提示什么管道正在关闭,看了很多解决办法,挑了一个简单的:安装包有问题,重新下载一个,就好了(持续更新....)
- DeviceIoControl的使用说明
应用程序和驱动程序的通信过程是:应用程序使用CreateFile函数打开设备,然后用DeviceIoControl与驱动程序进行通信,包含读和写两种操作.还能够用ReadFile读数据用WriteFi ...
- AE 先进的视频画面 快速释放 慢动作
视频画面细腻,或快速释放.慢速播放视频.其实很easy.在使用图层time中间Enable Time remapping能够.快捷键ctrl+alt+T债券,我无法使用,我没有深究. 在这一点上,在视 ...
- [ACM] HDU 2295 Radar (二分法+DLX 重复覆盖)
Radar Problem Description N cities of the Java Kingdom need to be covered by radars for being in a s ...
- 设计模式入门之装饰器模式Decorator
//装饰模式定义:动态地给一个对象加入一些额外的职责. //就添加功能来说.装饰模式比生成子类更为灵活 //这也提现了面向对象设计中的一条基本原则,即:尽量使用对象组合,而不是对象继承 //Compo ...
- Eclipse正在使用Ant扑灭Android数据包错误的解决方案 – Perhaps JAVA_HOME does not point to the JDK
问题描写叙述: 在Eclipse中执行ant批量打包工具出错,日志信息例如以下: D:\Android\android-sdk-windows\tools\ant\build.xml:601: The ...
- MySQL 更新中国列:1366 Incorrect string value 问题解决了
周围环境:Win7 64位置,mysql-5.6.25-winx64,MySQL workbench 问题:MySQL在更新时出现异常: warning(s): 1366 Incorrect stri ...
- seajs进行模块化开发
seajs进行模块化开发 模块化前端开发入门指南(二) 2015-08-26 15:23 by paseo, 370 阅读, 0 评论, 收藏, 编辑 概览 使用seajs模块化加载器进行模块化开发, ...
- (大数据工程师学习路径)第四步 SQL基础课程----select详解
准备 在正式开始本内容之前,需要先从github下载相关代码,搭建好一个名为mysql_shiyan的数据库(有三张表:department,employee,project),并向其中插入数据. 具 ...
- Python开发一个csv比较功能相关知识点汇总及demo
Python 2.7 csv.reader(csvfile, dialect='excel', **fmtparams)的一个坑:csvfile被csv.reader生成的iterator,在遍历每二 ...