如何在我的模型中实现DBString.length?

时间:2017-03-29 19:23:58

标签: odbc dapper informix

假设我有以下Informix表结构:

tablename = clients
field = firstname CHAR(30)

和这样的模型:

public class Clients
{
    [StringLength(30)]
    public string firstname { get; set; }
}

我知道我可以将firstname声明为DbString类型并设置IsAnsi和Length:

con.Execute(@" insert Clients(firstname) values(?firstname?)", 
    new { firstname = new DbString { Value = "John", IsAnsi = true, Length = 30 }});

但是当我将上面的模型传递给dapper时,会导致"非法尝试转换Text Byte blob类型"因为dapper假设字符串firstname是文本类型而不是固定字符串:

con.Execute(@" insert Clients(firstname) values(?firstname?)", Clients);

我无法找到任何显示如何:

的示例
  1. 将字符串长度定义为模型中的自定义属性,并通知dapper使用customer属性并将字符串定义为长度为
  2. 的DbString
  3. 告诉dapper在模型中使用StringLength数据注释属性(在我看来,这可能是理想的,因为很可能验证已经在使用,而且dapper可以更好地假设字符串)
  4. 我不确定垫片是否适用于这种情况。

0 个答案:

没有答案