EF遇到的一些问题_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > EF遇到的一些问题

EF遇到的一些问题

 2015/5/8 12:35:42  敷衍不起  程序员俱乐部  我要评论(0)
  • 摘要:环境:EntityFramework版本号:4.1.0.0问题一:“数据读取器与指定的“。。。.。。。”不兼容。某个类型为“。。。”的成员在同名的数据读取器中没有对应的列。”。使用方式:rep.context.Database.SqlQuery<T>(sql,pList.ToArray<object>());//sql是直接字符串拼接的问题原因:T是个视图,因为数据库中的字段是有前缀"C_"
  • 标签:问题 一些问题

环境:EntityFramework 版本号:4.1.0.0

 

问题一:“数据读取器与指定的“。。。.。。。”不兼容。某个类型为“。。。”的成员在同名的数据读取器中没有对应的列。”。

使用方式:rep.context.Database.SqlQuery<T>(sql, pList.ToArray<object>()); //sql       是直接字符串拼接的

问题原因:T 是个视图,因为数据库中的字段是有前缀"C_",而生产实体的时候 我们做了去前缀的操作。导致 字段对应不上。

解决方案:在拼写sql 字符串的时候 把有前缀的字段 起个别名去掉前缀。如: C_DISP_TYPE_NM as DISP_TYPE_NM。

 

问题二:“V_CLAIM_DISPATCH 的“MAIN_STAT”属性不能设置为“Int64”值。必须将该属性设置为类型为“Int32”的非 null 值”

使用方式:var surveyList = claimBiz.FindAll<V_CLAIM_DISPATCH>(sqlText, pList); 

问题原因:【不明】猜想可能原因是,数据库是number(10),生成的实体是int。而实际读出来的数据要对应int64。但那个字段类型的映射是EF自动完成的,不能人为修改。所以报错。

解决方案:重新写个类V_CLAIM_DISPATCH_COPY  标志字段 Nullable<Int64> MAIN_STAT。上面的使用方式 var surveyList = claimBiz.FindAll<V_CLAIM_DISPATCH_COPY  >(sqlText, pList);  把泛型改成自定义类。

 

发表评论
用户名: 匿名