【问题标题】:How to add an XmlDocument to a POCO class?如何将 XmlDocument 添加到 POCO 类?
【发布时间】:2014-06-20 05:15:03
【问题描述】:

我有这门课:

    [Table("Items", Schema = "Datamodel")]
    public class BaseItem : Identifier
    {
        [Required(ErrorMessage = "Name is required.")]
        [MaxLength(240)]
        public string Name { get; set; }

        public XmlDocument Content { get; set; }

        public BaseItem() { Content = new XmlDocument(); }
        internal BaseItem(string name) : this() { Name = name; }
    }
}

(Identifier 类只定义了一个额外的 GUID 类型的属性 Id,它是必需的,默认情况下使用新值初始化。我所有的 POCO 类都继承自这个。)

问题是 XmlDocument 属性,我想将它存储在数据库中,最好是 XML 类型,这样 XML 的内容就可以成为我查询的一部分。那么,这可能吗?
如果不是,那么在保持此类的公共接口完整的同时,最好的选择是什么?

【问题讨论】:

    标签: c# poco entity-framework-6


    【解决方案1】:

    也许可以将 XmlDoc 序列化为 Blob,但何必呢?它本质上是文本。

    public string ContentText { get; set; }
    
    private _xmlDocuent;    
    [NotMapped] 
    public XmlDocument Content 
    {
      get { return _xmlDocumet ?? (_xmlDocument = new XmlDocuent.Parse(ContentTExt)); }
    }
    

    【讨论】:

    • Parse 方法适用于 XDocument,而不是 XmlDocument。但我明白你的意思。它为我的代码添加了一个可见属性:ContentText。我不希望该财产公开。但是 EF POCO 的东西看不到受保护的属性。
    • 这就是事物的本质。您可以使用 DAO 层摆脱它,但这很麻烦。额外的属性只是一个缺陷,而不是一个炫耀。
    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    相关资源
    最近更新 更多