映射我的对象以用于ADO.NET

时间:2013-08-12 22:37:21

标签: .net ado.net

我收到异常“从对象类型MyType到已知托管提供程序本机类型不存在映射。”我如何提供映射?

我通过ADO.NET将数据发送到SQL Server。我基本上要将MyType转换为整数。我不需要它作为MyType回来。它作为一个int返回它是好的,尽管它作为MyType回来会很好。

为那些坚持看代码的人编辑:

我有一个类型:

class MyType {
    int field1;
    int field2;
}

我想将paramValue类型的MyType发送到数据库:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    SqlCommand command = new SqlCommand(queryString, connection);
    command.Parameters.AddWithValue("@param", paramValue);

    connection.Open();
    SqlDataReader reader = command.ExecuteNonQuery();
}

修改

假设我有一个功能:

class MyType {
    int field1;
    int field2;

    public int dbValue() {
        return field1 + field2;
    }
}

我想用:

command.Parameters.AddWithValue("@param", paramValue);

而不是:

command.Parameters.AddWithValue("@param", paramValue.dbValue());

因为我不想在任何地方放置.dbValue(),所以我将它发送到数据库。这只是推迟了我忘记放.dbValue()的不可避免的一天。

1 个答案:

答案 0 :(得分:0)

数据库不知道如何存储MyType。保存时应该将它提供为2个整数,并且在阅读时应该从2个整数中手动重新创建MyType