如何在 PetaPoco 中检索 xml 列

Posted

技术标签:

【中文标题】如何在 PetaPoco 中检索 xml 列【英文标题】:How to retrieve xml column in PetaPoco 【发布时间】:2015-03-25 15:14:02 【问题描述】:

我在 sql (msql-server) 中使用nvarchar 数据类型来描述描述。 但我想将该列更改为 xml 数据类型。 在我的 c# 数据层中,我使用 petapoco 来获取数据,该数据使用 Ado.Net DataReader。

所以

poco 对象:

[PetaPoco.TableName("sqlTableName")]
[PetaPoco.PrimaryKey("ID")]
public class PlainObj

    public int ID  get; set;  //(int, not null)
    public string Description  get; set;  //(string, null) want to change this to xml type

poco 获取方法

   public static List<PlainObj> Get(int InId)
    
        var s = PetaPoco.Sql.Builder.Append(";EXEC @0", Common.StoreProcs.GetSP);
        s.Append("@@ID = @0", new SqlParameter()  SqlDbType = SqlDbType.Int, Value = InId );

        return PetaPocoContext.Fetch<PlainObj>(s); //Gets the object 
    

我的问题是,如何获取 XML 而不是描述字符串,PetaPoco 是否支持它。

【问题讨论】:

【参考方案1】:

我认为 Petapoco 不支持开箱即用的 XML 数据类型,但是如果您在 SQL Server 中将数据类型更改为 XML,并将 poco 上的相应属性保留为字符串,则可以使用 linq to xml 之类的东西或 xDocument 在选择时将返回的字符串作为 xml 处理。您可能还可以向 poco 添加一个 XmlDocument 属性(Petapoco.Igrnored)(我建议在部分类中,这样如果您重新生成 t4,它就不会被覆盖)并处理字符串到 xml 和 xml 到字符串的转换getter/setter,这样您就可以无缝访问 XML 对象。虽然我还没有测试过对 xml 字段的更新/插入,但是 Petapoco 的参数处理通常需要我扔给它的任何东西。

【讨论】:

是的,这正是我所做的,将 SQL 数据类型更改为 XML,但将相应的 petapoco 对象属性保留为字符串。我会接受你的回答作为感谢:)

以上是关于如何在 PetaPoco 中检索 xml 列的主要内容,如果未能解决你的问题,请参考以下文章

PetaPoco - 如何关闭自动增量?

如何使用 Petapoco 将自动增量 ID 设置为另一列

如何在sql中查询xml列

如何使用 jdbc 和 java-swing 从特定列中检索完整的 xml(DataType as XMLTYPE)

在 PetaPoco 中,如何装饰具有多列主键的表

如何对使用 PetaPoco.Database 的服务进行单元测试