Dapper 主键Guid类型,Insert时候一直提示无法将guid隐士转换为int问题

zhanglong_longlong 2017-06-05 12:11:17
用到DapperExtensions,在做insert的时候提示无法将guid隐士转换为int问题,映射的时候已经制定 Map(f => f.UserID).Key(KeyType.Guid);主键并且guid,但是到insert方法的时候就会提示这个,难道只能改数据库为int类型才行了吗?DapperExtensions不支持guid主键?
...全文
1303 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
jankie1122 2018-02-02
  • 打赏
  • 举报
回复
我知道错误原因了,原来不是主键设置的问题,是返回的时候,我写了Int,它成功插入后,返回的是一个string,天哪,这个也太坑了吧 int insertInt = _IDbConnection.Insert(obj, null); 所以正确的应该这样写: string insertInt = _IDbConnection.Insert(obj, null);
小麦君 2017-07-18
  • 打赏
  • 举报
回复
麻烦问下怎么解决的,我遇到同样的问题
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复
谢谢各位,自己解决了
exception92 2017-06-05
  • 打赏
  • 举报
回复
引用 10 楼 zhanglong_longlong 的回复:
[quote=引用 8 楼 duanzi_peng 的回复:] [quote=引用 6 楼 zhanglong_longlong 的回复:] [quote=引用 4 楼 duanzi_peng 的回复:] 难道只能改数据库为int类型才行了吗 -》int 为整数数值类型。你把数据库中的字段改成varchar(36)类型
Dapper这样插入就不能直接guid类型吗?必须要改成varchar或者其他吗?[/quote] 程序中的 UserID 是什么类型的?[/quote]我现在使用DapperExtensions的insert方法,主键不管是guid还是string,他都会提示无法隐士转换为int类型,不知道有什么解决方法[/quote] https://stackoverflow.com/questions/23585672/dapper-crud-with-guid-ids
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复


都是一样的必须为int,还是没有人正确的回答我的提问
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复
引用 18 楼 hdt 的回复:
网上帮你查了一下 试试把数据库那一列改为uniqueidentifier类型 直接用guid插入
我前面已经说过,guid都是一样
真相重于对错 2017-06-05
  • 打赏
  • 举报
回复
网上帮你查了一下 试试把数据库那一列改为uniqueidentifier类型 直接用guid插入
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复
引用 16 楼 hdt 的回复:
是不是因为你把那一列设为主键的缘故?
不是数据库设置不设置,而是他应该默认已包含ID来默认主键,也只有主键会不能插入,其他guid正常插入
真相重于对错 2017-06-05
  • 打赏
  • 举报
回复
是不是因为你把那一列设为主键的缘故?
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复
不知道有没有真正知道我说的这个问题
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复
引用 13 楼 hdt 的回复:
[quote=引用 12 楼 zhanglong_longlong 的回复:] 请先看标题后在回复,谢谢,关于DapperExtensions的insert方法,主键不管是guid还是string插入,他都会提示无法隐士转换为int类型,不知道有什么解决方法
我不用.net很多年,你说那些新东西,我不知道。我想string是应该可以直接插入的,你只要把原直接改成string就可以了,也就是我说的tostring. [/quote]
真相重于对错 2017-06-05
  • 打赏
  • 举报
回复
引用 12 楼 zhanglong_longlong 的回复:
请先看标题后在回复,谢谢,关于DapperExtensions的insert方法,主键不管是guid还是string插入,他都会提示无法隐士转换为int类型,不知道有什么解决方法
我不用.net很多年,你说那些新东西,我不知道。我想string是应该可以直接插入的,你只要把原直接改成string就可以了,也就是我说的tostring.
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复
请先看标题后在回复,谢谢,关于DapperExtensions的insert方法,主键不管是guid还是string插入,他都会提示无法隐士转换为int类型,不知道有什么解决方法
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复
引用 9 楼 hdt 的回复:
简单的可以guid.tostring()存入 读取guid.fromstring()
我现在使用DapperExtensions的insert方法,主键不管是guid还是string,他都会提示无法隐士转换为int类型,不知道有什么解决方法
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复
引用 8 楼 duanzi_peng 的回复:
[quote=引用 6 楼 zhanglong_longlong 的回复:] [quote=引用 4 楼 duanzi_peng 的回复:] 难道只能改数据库为int类型才行了吗 -》int 为整数数值类型。你把数据库中的字段改成varchar(36)类型
Dapper这样插入就不能直接guid类型吗?必须要改成varchar或者其他吗?[/quote] 程序中的 UserID 是什么类型的?[/quote]我现在使用DapperExtensions的insert方法,主键不管是guid还是string,他都会提示无法隐士转换为int类型,不知道有什么解决方法
真相重于对错 2017-06-05
  • 打赏
  • 举报
回复
简单的可以guid.tostring()存入 读取guid.fromstring()
exception92 2017-06-05
  • 打赏
  • 举报
回复
引用 6 楼 zhanglong_longlong 的回复:
[quote=引用 4 楼 duanzi_peng 的回复:] 难道只能改数据库为int类型才行了吗 -》int 为整数数值类型。你把数据库中的字段改成varchar(36)类型
Dapper这样插入就不能直接guid类型吗?必须要改成varchar或者其他吗?[/quote] 程序中的 UserID 是什么类型的?
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复
现在的问题是我数据库换成varchar他还是会提示无法将string转换为int,DapperExtensions Insert方法只支持Int类型?
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复
引用 4 楼 duanzi_peng 的回复:
难道只能改数据库为int类型才行了吗 -》int 为整数数值类型。你把数据库中的字段改成varchar(36)类型
Dapper这样插入就不能直接guid类型吗?必须要改成varchar或者其他吗?
zhanglong_longlong 2017-06-05
  • 打赏
  • 举报
回复
引用 3 楼 hdt 的回复:
guid 是128位,int 32位才32位,怎么能存的下?
请看下标题,我不是说直接guid转换int,我是DapperExtensions Insert方法的时候,如果主键是guid类型,插入的时候就一直会出现这个错误提示,请问有什么可以解决,不知道他内部哪里做转换
加载更多回复(4)
Dapper .NET 是 .NET 下一个简单的对象关系映射库 (ORM)。它支持SQLite, SQL CE, Firebird, Oracle, MySQL, PostgreSQL and SQL Server等数据库。   优点: 使用Dapper可以自动进行对象映射! 轻量级,单文件。 支持多数据库。 Dapper原理通过Emit反射IDataReader的序列队列,来快速的得到和产生对象。   Dapper.Net的示例代码: public class Dog {     public int? Age { get; set; }     public Guid Id { get; set; }     public string Name { get; set; }     public float? Weight { get; set; }     public int IgnoredProperty { get { return 1; } } }             var guid = Guid.NewGuid(); var dog = connection.Query("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid }); dog.Count()     .IsEqualTo(1); dog.First().Age     .IsNull(); dog.First().Id     .IsEqualTo(guid); 下面是Dapper .NET与其他几种数据访问组件的性能对比,从比较结果看Dapper .NET表现优异。 Performance of SELECT mapping over 500 iterations - POCO serialization Method Duration Remarks Hand coded (using a SqlDataReader) 47ms Can be faster Dapper ExecuteMapperQuery 49ms ServiceStack.OrmLite (QueryById) 50ms PetaPoco 52ms BLToolkit 80ms SubSonic CodingHorror 107ms NHibernate SQL 104ms Linq 2 SQL ExecuteQuery 181ms Entity framework ExecuteStoreQuery 631ms Performance of SELECT mapping over 500 iterations - dynamic serialization Method Duration Remarks Dapper ExecuteMapperQuery (dynamic) 48ms   Massive 52ms Simple.Data 95ms Performance of SELECT mapping over 500 iterations - typical usage Method Duration Remarks Linq 2 SQL CompiledQuery 81ms Not super typical involves complex code NHibernate HQL 118ms   Linq 2 SQL 559ms   Entity framework 859ms   SubSonic ActiveRecord.SingleOrDefault         github地址:https://github.com/StackExchange/dapper-dot-net 入门教程:http://www.cnblogs.com/Sinte-Beuve/p/4231053.html   Dapper已经有很多成熟的扩展项目了,Dapper.Rainbow、Dapper.Contrib,DapperExtensions   其中Dapper-Extensions非常不错,github地址:https://github.com/tmsmith/Dapper-Extensions Dapper-Extensions的优点: 1、开源 2、针对Dapper封装了常用的CRUD方法,有独立的查询语法。 3、需要映射的实体类本身0配置,无需加特性什么的。是通过独立的映射类来处理,可以设置类映射到DB的别名,字段的别名等等。 Dapper-Extensions的缺点: 1、好几年没更新了 2、不支持oracle(木有oracle的方言,已经搞定)  3、不能同时支持多种数据库(已经搞定) 4、部分代码有些bug(发现的都搞定了)   Dapper-Extensions入门教程可参考: http://www.cnblogs.com/hy59005271/p/4759623.html       标签:orm

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧