1
我尝试为我的实体框架代码第一类写一个XML <> Object Mapper。由于EF不会在此刻支持这种自动XML序列化我这样做是为了访问“档案”对象属性和操纵底层ProfileData字符串:C#对象引用应自动更改映射字段
[Column(TypeName = "xml")]
public string ProfileData { get; set; }
[NotMapped]
public Profile Profile
{
get { return ProfileData.DeserializeXml<Profile>(); }
set { ProfileData = value.SerializeXml(); }
}
一切工作正常,但ProfileData.DeserializeXml()返回(中课程)一个新的对象,从ProfileData字符串序列化。我认为扩展方法是不相关的我的问题,但我无论如何它张贴:
public static T DeserializeXml<T>(this string xml) where T : class, new()
{
if(string.IsNullOrWhiteSpace(xml)) return new T();
var serializer = new XmlSerializer(typeof(T));
using (var reader = new StringReader(xml))
{
try { return (T)serializer.Deserialize(reader); }
catch { return null; }
}
}
当我想改变我的对象我这样做:
var profile = myObject.Profile;
profile.fooVar = "test";
但这不会影响我的myObject的直到我这样做:
myObject.Profile = profile;
我知道为什么,但我并不想这样做,我想......我们可以说“直接引用”到底层ProfileData字符串我的对象包装。
任何想法来存档或不可能?
这就是**完全**我想要的,但某种程度上没有看到。非常感谢! – Marc