无法转换类型' WebMatrix.Data.DynamicRecord'到' int'

时间:2014-07-01 10:18:31

标签: c# sql webmatrix

无法转换类型' WebMatrix.Data.DynamicRecord'到' int'当我尝试将QueryValue方法的值输出到int?

时出现异常
public class SaveCustomerData : IDisposable
{
private readonly string _connectionString;
private readonly Database _db;

public SaveCustomerData(string connectionString)
{
    _connectionString = connectionString;
    _db = Database.Open(connectionString);
}

public void Insert(string fname, string lname, string phone, string cellno, DateTime dob, string gender, string address, string address2, string creditno, string city, string postalcode, string email) {
    var uid = Convert.ToInt32(_db.QuerySingle("SELECT UserID FROM UserProfile WHERE Email=@0",email));



    _db.Execute("INSERT INTO Customer_Table (customer_fname, customer_lname, customer_phone, customer_mobile, customer_dob, customer_gender, customer_address, customer_address2, customer_credit_no, customer_city, customer_postal, UserID) VALUES (@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10, @11, @12)",
        fname, lname, phone, cellno, dob, gender, address, address2, creditno, city, postalcode, uid);

1 个答案:

答案 0 :(得分:0)

你必须使用它:

_db.QuerySingle("SELECT UserID FROM UserProfile WHERE Email=@0",email)
   .Item["UserID"];

按顺序返回UserID的值。您收到了问题中发布的错误,因为您的查询返回了WebMatrix.Data.DynamicRecord类型的对象,其中

  

使用自定义类型描述符和表示数据记录   动态语言运行时(DLR)的功能。

表示here,而不是UserID的值。

为了获得执行_db.QuerySingle(...)后返回的记录中某个列的值,您有两个选择:

  • Item[Int32]
  

使用指定的索引返回DynamicRecord实例中列的值。

  • Item[string]
  

使用指定的名称返回DynamicRecord实例中列的值。