我正在测试Dapper将对象加载/持久化到Oracle数据库,并且管理Oracle的Guid存储我需要一个SqlMapper.TypeHandler<Guid>.从数据库加载Guid列时,会调用Parse方法,但是当我尝试使用Guid参数执行SQL语句时,我得到以下异常:
System.ArgumentException未处理; Message = Value不在预期范围内.Source = Oracle.DataAccess.
在调试中我可以看到我从数据库加载我的类时调用了我的处理程序的Parse()方法,但是SetValue()mdethod却没有.
重现异常的代码如下
CREATE TABLE foo (id RAW (16) NOT NULL PRIMARY KEY,
name VARCHAR2 (30) NOT NULL);
INSERT INTO foo (id, name) VALUES (SYS_GUID (), 'Bar');
COMMIT;
Run Code Online (Sandbox Code Playgroud)
using System;
using System.Linq;
using Dapper;
using Oracle.DataAccess.Client;
namespace Program
{
public class Foo
{
public Guid Id { get; set; }
public string Name { get; set; }
}
class GuidTypeHandler : SqlMapper.TypeHandler<Guid>
{
public override Guid Parse(object value)
{
Console.WriteLine("Handling Parse of …Run Code Online (Sandbox Code Playgroud)