如何在 PetaPoco 中检索 xml 列

How to retrieve xml column in PetaPoco

我在 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 而不是 Description 的字符串,PetaPoco 是否支持它。

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