我将尝试描述我的情况:
我有 Windows Store App (C#),它从远程数据库 () 接收数据DataBase1
,并将其存储在隔离存储 ( DataBase2
) 中的本地数据库中。我有一个类用于所有数据操作,例如:
[Table("Table")]
[DataContract]
public class Class1
{
[PrimaryKey]
[Column("id")]
[DataMember(Name = "id")]
public int Id { get; set; }
}
这个类可以包含 50+ 个字段。
我使用Newtonsoft.Json:
var class = JsonConvert.DeserializeObjectAsync<Class1>(json);
一切都很好,但在DataBase1
所有领域都有default value = null
,当我收到 null 我有异常。
我有两个想法如何解决它:
- make
int Id
->int? Id
,并在 setter 中将“null”更改为“0”(并且始终使用可空类型),但我不确定性能。 - 创建另一个可为空的字段 (
int? IdCanBeNull
),其中存储来自 DataBase1 的值,然后在IdCanBeNull
s setter 中将嵌套值设置为Id
并始终使用int Id
(不可为空的类型)(将其保存在DataBase2
其他位置)。性能更好,但需要创建 2xNumberOfFields
我的问题是:
哪个是正确的方法?
可能您有另一个想法,如何使用 using 将“null”存储为“0” Newtonsoft.Json
。
试着解释你的答案。
笔记:
- 是的,当我收到 json 时,我可以将所有“null”删除为“0”——但这不是一个好的解决方案。
- 我无法更改的默认值
DataBase1
。