数据库表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类型的范围内时 可以自动转换啊 可是这里为什么不自动转换呢??
“当bigint类型的数据大小在int类型的范围内时 可以自动转换啊”,这应该是指在数据库里转换吧。
如果数据库中的数据都在int类型的范围内,那你试试在Entity Framework进行这样映射:
Property(p => p.id).HasColumnName("id").HasColumnType("int");
查询数据库返回数据时,数据的对齐格式是bigint的而不是int的,所以报错了。
跟数据库对应的是Int32,所以以后都转换成Int32就好了。