我有可序列化的类
[Serializable]
public class Entity
{
public Guid? SomeId {get;set;}
...
}
在DB中,它有SomeId == null
从DB恢复时,它有SomeId == Guid.Empty,但如果我添加了emty默认构造函数,它将使用SomeId == null进行恢复。
任何人都可以解释这种行为
谢谢
答案 0 :(得分:0)
序列化程序需要空构造函数来创建Entity
的实例。创建此实例后,它将执行反序列化:使用序列化值设置各个属性。这就是为什么财产制定者也必须公开。
要找出实际问题,您可以开始验证数据是否已正确序列化。
我假设您使用的是OR mapper软件。
在这种情况下,也可能是OR映射器使用默认值初始化SomeId
属性。
答案 1 :(得分:-1)
因为您使用Nullable类型 Guid?,所以您添加了emty默认construtor,以便SomeId为null。
例如:如果你使用公共布尔? IsTrue {得到;组; ,可以为IsTrue属性赋值true或false,或者为null。详细信息msdn中的Nullable类型:http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx