下面,我有我的主要模型mymodel。
options是options类型的属性。
postgresoptions中有一个jsonb列。
public class MyModel
{
public string Id { get; set; }
public Options Options { get; set; } = new Options();
}
选项模型:
public class Options
{
public string Test { get; set; }
}
使用dapper,我插入如下内容:
public async Task Create(MyModel model)
{
string sql = "insert into MyModel (id, options) values (@id, @options)"
....
我得到这个错误:
“myapp.models.api.options类型的成员选项不能用作参数值”
dapper是如何知道我发送的选项模型的?我应该在发送到dapper之前序列化选项吗?
我找不到很多这样的例子,模型里面有模型。
1条答案
按热度按时间voase2hg1#
dapper知道options模型,因为您将其名称定义为sqlparam(@options),它会尝试将每个模型属性Map到匹配的查询参数中。
您可以定义自己的类型处理程序
ITypeHandler
它处理序列化,或者像这样传递模型:请参见此处如何创建自定义类型:https://github.com/stackexchange/dapper/blob/master/dapper.tests/typehandlertests.cs#l101