gpt4 book ai didi

dapper - 使用 Dapper 从数据库中检索 XML

转载 作者:行者123 更新时间:2023-12-04 12:07:17 27 4
gpt4 key购买 nike

我正在使用 Dapper 查询包含 XML 字段的表:

CREATE TABLE Workflow
(
Guid uniqueidentifier not null,
State xml not null
)

然后映射到 XDocument 类型的属性:
public class Workflow
{
public Guid InstanceId { get;set; }
public XDocument State { get;set; }
}

但是当我尝试查询表时,出现以下错误:
Error parsing column 1 (State= - String)
at Dapper.SqlMapper.ThrowDataException(Exception ex, Int32 index, IDataReader reader, Object value) in d:\\Dev\\dapper-dot-net\\Dapper NET40\\SqlMapper.cs:line 4045
at Deserialize038b29f4-d97d-4b62-b45b-786bd7d50e7a(IDataReader )
at Dapper.SqlMapper.<QueryImpl>d__11`1.MoveNext() in d:\\Dev\\dapper-dot-net\\Dapper NET40\\SqlMapper.cs:line 1572
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Dapper.SqlMapper.Query[T](IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Boolean buffered, Nullable`1 commandTimeout, Nullable`1 commandType) in d:\\Dev\\dapper-dot-net\\Dapper NET40\\SqlMapper.cs:line 1443
at MyProject.DapperBase.Query[TResult](String command, DynamicParameters parameters, IDbTransaction transaction, Boolean buffered, Int32 commandTimeout) in d:\\MyProject\\DapperBase.cs:line 122
at MyProject.WorkflowData.Get(Guid identifier) in d:\\MyProject\\WorkflowData.cs:line 41
at MyProject.WorkflowLogic.Save(Workflow workflow) in d:\\MyProject\\WorkflowLogic.cs:line 34
at MyProject.WorkflowsController.Save(Guid id, WorkflowRequest request) in d:\\MyProject\\WorkflowsController.cs:line 97

InnerException: Invalid cast from 'System.String' to 'System.Xml.Linq.XDocument'.
at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType)
at Deserialize038b29f4-d97d-4b62-b45b-786bd7d50e7a(IDataReader )

除了修改我的 POCO 以使用字符串数据类型然后将字符串转换为其他地方的 XDocument 之外,有没有办法让 Dapper 从数据库正确反序列化 XML?

最佳答案

最后,我只是强制执行它:

public class Workflow
{
public Guid InstanceId { get;set; }
public XDocument StateIn { set { State = value.ToString(); } }
public string State { get;set; }
public XDocument StateOut { get { return XDocument.Parse(State); } }
}

Dapper 使用 State 值,我只是在 StateIn 上设置值并从 StateOut 中读取它。我觉得提出这样的解决方案有点脏,但是,嘿,它有效。

关于dapper - 使用 Dapper 从数据库中检索 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26986520/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com