2017-10-20 49 views
0

我:財產添加XML屬性在DB首先

實體框架數據庫第一

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; } 
} 

回答

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; 
    } 
} 
+0

一個非常有趣的方式。謝謝 –

+0

請注意,如果您想要使用這些屬性進行查詢,您仍然需要訪問原始屬性。 – Sefe

1

當您首先使用數據庫時,即根據設計生成您的類模型。

解決方案1.微軟首先放棄了對數據庫的支持,並且edmx被取消了。一種解決方案是使用CODE FIRST代替。這將允許你用屬性裝飾你的POCO類。

解決方案2.創建一個僅用於XML序列化的並行模型。

+0

這個數據庫很舊(甚至有* .dbf)。不幸的是,我不能在那裏改變任何東西。必須適應這個事實。謝謝 –