[英]How to use a Nested object as a query parameter for Dapper
我使用的是 Dapper 而不是實體框架。 當我嘗試使用嵌套對象作為查詢參數時遇到錯誤。
錯誤如下所示:
類型為 App.Model.Device 的 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; }
}
和一個 SQL 插入查詢,它看起來像這樣:
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;
}
}
}
}
*更新答案
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);
或者,
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
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.