首页 新闻 搜索 专区 学院

使用linq时 遇到的bigint和int的问题

0
悬赏园豆:20 [已解决问题] 解决于 2012-02-29 14:35

数据库表company中有字段id 类型 bigint

asp.ent 创建和此表对应的类company.cs 有字段id类型 int

现查询此表中数据 代码如下

DataContext ctx = new DataContext("data source=.;user id=sa;password=sa;initial catalog=web;");

Table<Company> Customers = ctx.GetTable<Company>();

var s=from c in Customers where c.id == 22 select new { ID = c.id, Name = c.coname, Address = c.coaddress }

foreach (var item in s)
        {
            int sum = int.Parse(item.id.ToString());
            string name = item.Name;
            string address = item.Address;
        }

运行发现 如果类Company.cs中id类型是int 报错 提示 类型转换错误;

如果类Company.cs中id类型是Int64 能够正常运行

此处感到郁闷 为什么会有这个错误呢?

我猜可能是 数据库中bigint对应c#中Int64类型 但有关bigint的解释是 当bigint类型的数据大小在int类型的范围内时  可以自动转换啊  可是这里为什么不自动转换呢??

holly Yang的主页 holly Yang | 初学一级 | 园豆:10
提问于:2012-02-22 16:28
< >
分享
最佳答案
0

“当bigint类型的数据大小在int类型的范围内时  可以自动转换啊”,这应该是指在数据库里转换吧。

如果数据库中的数据都在int类型的范围内,那你试试在Entity Framework进行这样映射:

Property(p => p.id).HasColumnName("id").HasColumnType("int");



收获园豆:20
dudu | 高人七级 |园豆:37776 | 2012-02-22 16:54
其他回答(2)
0

查询数据库返回数据时,数据的对齐格式是bigint的而不是int的,所以报错了。

az235 | 园豆:8283 (大侠五级) | 2012-02-22 16:54
0

跟数据库对应的是Int32,所以以后都转换成Int32就好了。

悟行 | 园豆:12373 (专家六级) | 2012-02-22 17:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册