虽然有问题的数据是一个字符串,并且所有的代码都是这样引用的,但我得到了“InvalidCastException”。如何将文本分配给字符串是无效投射?
这里的型号:
public class Vendor
{
[Required]
public string VendorId { get; set; }
[Required]
public string CompanyName { get; set; }
}
这里的查询:
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT contact_id as VendorID, company_name FROM t_contacts where type = 'V'";
cmd.CommandType = CommandType.Text;
conn.Open();
using (OleDbDataReader oleDbD8aReader = cmd.ExecuteReader())
{
while (oleDbD8aReader != null && oleDbD8aReader.Read())
{
var vendorId = oleDbD8aReader.GetString(0);
var companyName = oleDbD8aReader.GetString(1);
Add(new Vendor { VendorId = vendorId, CompanyName = companyName });
}
}
}
中MS Access表被查询两列是字符串(文本字段大小10 CONTACT_ID,文本字段大小50 COMPANY_NAME )。 “类型”是文本字段大小1.
该错误消息指示它认为COMPANY_NAME是int:
System.InvalidCastException是由用户代码 的HResult = -2147467262 消息=指定转换无效未处理。 源= System.Data 堆栈跟踪: 在System.Data.OleDb.ColumnBinding.ValueString() 在System.Data.OleDb.OleDbDataReader.GetString(的Int32有序) 在HandheldServer.Models.VendorRepository..ctor()中C:\ HandheldServer \ HandheldServer \型号\ VendorRepository.cs:行35
第35行是:
string companyName = oleDbD8aReader.GetString(1);
怎么能分配COMPANY_NAME的内容(文本50)为一个字符串导致无效的转换?