博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EF 从sqlserver2008 迁移到 2005出现的BUG
阅读量:4308 次
发布时间:2019-06-06

本文共 948 字,大约阅读时间需要 3 分钟。

在VS10+Server08中使用EF4.4,发布数据库为SQL05,发生错误的问题

 
问题描述
环境描述:工具为VS2010+SQL08 R2,EntityFramework版本为4.4(在Framework4.5中为5.0),在本机完全测试完成后,发布到服务器上(Server 2008 R2+Sql 2005)时,会出现错误。
解决方案
在Windows资源管理器中找到实体模型文件(后缀为edmx),用记事本打开后,可看到如下内容:
在图片中框选部分,默认是2008,修改为2005.则不会将达datetime类型转换为数据库的datetime2类型,所以解决问题。
原因分析
通过查找资料得知:

 

ProviderManifestToken 是 Entity Data Model (EDM) 内存储架构定义语言 (SSDL) 中的 Schema 元素的必需属性。此标记用于为脱机方案加载提供清单。

打开存储连接时,提供程序可以获取所有需要的信息以选择要返回的正确清单。这在脱机方案中可能做不到,此时,连接信息不可用或无法连接到存储。对于这些情况,Entity Framework 在 SSDL 中存储了一个提供程序清单标记,足够提供程序用来标识清单。

该标记没有特定的架构;要由提供程序来选择在不打开到存储的连接的情况下标识清单所需的最少信息。

下面的“提供程序清单标记”示例显示了 ProviderManifestToken 属性中捕获的 SQL Server 版本信息。

注->该段内容摘自:http://msdn.microsoft.com/zh-cn/library/bb896311%28v=VS.90%29.aspx

在资料得知,在EF4.x中,默认会将C#的Datetime类型转换为数据库的datetime2类型,所以导致该错误。修改为05后,会强制EF使用datetime类型,所以在SQL 2005中可以使用。默认转换为datetime2,通过SQL  Server Profiler监视sql语句可看到。

转载于:https://www.cnblogs.com/hubinglovecode/p/5159998.html

你可能感兴趣的文章
Cannot open include file: jni.h: No such file or directory解决方法
查看>>
HDU-水饺基情 二维树状数组
查看>>
visual studio 安装Entity framework失败
查看>>
测试对bug如何分析和定位
查看>>
c/c++学习书籍
查看>>
python应用-爬取猫眼电影top100
查看>>
HC-05蓝牙模块基本使用
查看>>
phper必知必会之类库自动加载的七种方式(三)
查看>>
ansible模块介绍
查看>>
NOIP201307货车运输
查看>>
齐次坐标
查看>>
[SQLite]使用记录
查看>>
HttpRequest 类
查看>>
Qt使用信号与槽时出现的错误“Incompatible sender/receiver arguments”
查看>>
MYSQL:基础——触发器
查看>>
JavaScript:学习笔记(9)——Promise对象
查看>>
内存泄露检测 vld
查看>>
优秀HTML5网站学习范例:从“饥饿游戏浏览器”谈用户体验
查看>>
spring security原理
查看>>
js 验证各种格式类型的正则表达式
查看>>