我有一个LINQ to SQL类(dbml)代表数据库中的一些表。我通过使用新属性(DwellingCode)扩展其中一个表(Dwelling)的部分类来添加一个“计算字段”。此属性获取Dwelling表中的多个数据库字段的值,并生成一个字符串。
到目前为止,一切正常;我可以让这个计算字段在网页等绑定控件中正确显示。问题是我还有一个SOAP Web服务,它返回一个Dwelling对象。当Dwelling对象被序列化为XML时,DwellingCode不包含在其他“真实”数据库字段中。
要使DwellingCode属性与其他数据库字段序列化,我需要做什么?基于一些谷歌搜索,我尝试将[DataMember]和[DataMamberAttribute]添加到DwellingCode属性,将[DataContract]和[Serializable]添加到部分类,但似乎没有任何效果。
public partial class Dwelling
{
public string DwellingCode
{
get
{
// code to concatenate fields here
}
}
}
答案 0 :(得分:0)
好的,将此添加到DwellingCode属性中:
[global::System.Runtime.Serialization.DataMemberAttribute(Name = "DwellingCode")]
出于某种原因,这些不起作用。我不确定为什么在我“使用”它时删除完整的命名空间路径不起作用,我读过的文档说如果未指定name参数,该名称将与属性名称相同所以我不知道为什么它如此挑剔。
using System.Runtime.Serialization;
...
[DataMemberAttribute(Name = "DwellingCode")]
[DataMemberAttribute()]
编辑:
我还需要添加一个空白的setter,否则该属性不会显示。不管。
[global::System.Runtime.Serialization.DataMemberAttribute(Name = "DwellingCode")]
public string DwellingCode
{
set
{
}
get
{
// code goes here
}
}
}
答案 1 :(得分:-1)
您的属性是只读的,这就是它没有被序列化的原因。标准内置序列化仅序列化读写属性(如您所见)。