【问题标题】:Add xml attribute for property in DB First为 DB First 中的属性添加 xml 属性
【发布时间】:2017-10-20 08:05:08
【问题描述】:

我有:

实体框架数据库优先

public partial class Departments
{
    public string Name_Department { get; set; }
    public int Department_ID { get; set; }
}

当我刷新模型时,文件中的所有修改都被清除了

我需要:

如何将属性属性添加到序列化 XML 中:

[Serializable]
[XmlType(nameof(Departments))]
public partial class Departments
{
    [XmlAttribute("Name_Department")]
    public string Name_Department { get; set; }
    [XmlAttribute("Department_ID")]
    public int Department_ID { get; set; }
}

【问题讨论】:

    标签: c# entity-framework serialization


    【解决方案1】:

    您必须在属性窗口中将生成的属性设为私有。然后,您必须创建引用私有属性的新公共属性并向它们添加属性。在属性窗口中,您还可以重命名您现在的私有属性,以便您可以像原始属性一样命名您的公共属性:

    生成的代码:

    public partial class Departments
    {
        private string Name_DepartmentCore { get; set; }
        private int Department_IDCore { get; set; }
    }
    

    自定义代码(在 C# 7.0 中):

    [Serializable]
    [XmlType(nameof(Departments))]
    public partial class Departments
    {
        [XmlAttribute("Name_Department")]
        public string Name_Department {
            get => Name_DepartmentCore;
            set => Name_DepartmentCore = value;
        }
        [XmlAttribute("Department_ID")]
        public int Department_ID {
            get => Department_IDCore;
            set => Department_IDCore = value;
        }
    }
    

    【讨论】:

    • 一种非常有趣的方式。谢谢
    • 请注意,如果您想使用这些属性进行查询,您仍然需要访问原始属性。
    【解决方案2】:

    您的类模型是在您首先使用 DB 时生成的,这是设计使然。

    解决方案 1. Microsoft 将首先放弃对数据库的支持,并弃用 edmx。一种解决方案是改用 CODE FIRST。这将允许您使用属性来装饰您的 POCO 类。

    解决方案 2。 创建一个仅用于 XML 序列化的并行模型。

    【讨论】:

    • 这个数据库很老了(即使有*.dbf)。不幸的是,我不能在那里改变任何东西。必须适应存在的事实。谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-28
    相关资源
    最近更新 更多