C# 如何使用嵌套对象作为Dapper的查询参数

C# 如何使用嵌套对象作为Dapper的查询参数,c#,sql-server,dapper,nested-object,C#,Sql Server,Dapper,Nested Object,我使用的是Dapper而不是实体框架。当我尝试使用嵌套的 对象作为查询参数 错误如下所示: 类型为App.Model.Device的设备成员不能用作参数值 如果我的问题结构有什么可以改进的,请发表评论。 不要猛击。 谢谢 我有这样的课程: public class RootObject { public List<Datum> data { get; set; } } public class Datum { public Device device { get;

我使用的是Dapper而不是实体框架。当我尝试使用嵌套的 对象作为查询参数

错误如下所示:

类型为App.Model.Device的设备成员不能用作参数值

如果我的问题结构有什么可以改进的,请发表评论。 不要猛击。 谢谢

我有这样的课程:

public class RootObject
{
    public List<Datum> data { get; set; }
}

public class Datum
{
    public Device device { get; set; }
    public long time { get; set; }
    public string data { get; set; }
}
public class Device
{
    public string id { get; set; }
}
private const string InsertQuery = @"Insert into iot.[Table] (DeviceID,DeviceData,UnixTime) values(@device.id,@data,@time)";
简洁的插入功能:

  public CreateCommand(List<Datum> Datums)
        {
            _Datums = Datums;
        }
        public void Execute()
        {
            Insert();
        }
        private void Insert()
        {
            using (var connection = DatabaseConfiguration.SqlServer())
            {
                using (var transaction = connection.BeginTransaction())
                {
                    try
                    {
                        connection.Execute(InsertQuery, _Datums, transaction);
                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
public CreateCommand(列出基准)
{
_基准=基准;
}
public void Execute()
{
插入();
}
专用空白插入()
{
使用(var connection=DatabaseConfiguration.SqlServer())
{
使用(var transaction=connection.BeginTransaction())
{
尝试
{
执行(插入查询、_数据、事务);
Commit();
}
捕获(例外)
{
transaction.Rollback();
投掷;
}
}
}
}
*更新答案

var ro = RootObject.Init(cnnStr, commandTimeout: 100); 
Device dev = new Device{id="123456"} 
long unixtime = long unixTimestamp = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1,> 1))).TotalSeconds; 
Datum dat = new Datum{device=dev,time=unixtime,data="abcdef"}; 
dat.id = ro.Datum.Insert(dat);
或者


哦,这就是问题中的一个拼写错误。不过谢谢你指出这一点。然而,问题仍然存在,我将用dapper更新我的问题,以澄清我使用的框架。
string insertQuery = @"Insert into iot.[Table] (DeviceID,DeviceData,UnixTime) values(@id,@data,@time)";

    var result = db.Execute(insertQuery, new
    {
        Device.ID,
        strData,
        (DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds
    });