Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
性能:反序列化JSON数组或在c#上存储包含数据的常量[]?_C#_Json Deserialization - Fatal编程技术网

性能:反序列化JSON数组或在c#上存储包含数据的常量[]?

性能:反序列化JSON数组或在c#上存储包含数据的常量[]?,c#,json-deserialization,C#,Json Deserialization,Im以JSON格式存储了大量需要提交到DB的数据。 此JSON数据正在反序列化为C#类[]。 问题是,还有其他种子数据存储在静态只读类[]中,只需加载/发送到DB即可。 我的问题是,假设一个实体有2万条记录,哪一条更好。拥有JSON和反序列化,还是拥有一个巨大的静态只读类[]? 我的目标是为同一件事提供一种统一的数据存储方法,而不是不同类型的文件 编辑:我的问题显然没有得到很好的解释,所以这次我会举个例子。我有两个选项来加载数据: 一个Json: 每个项都被反序列化为一个UserEntity,然

Im以JSON格式存储了大量需要提交到DB的数据。 此JSON数据正在反序列化为C#类[]。 问题是,还有其他种子数据存储在
静态只读类[]
中,只需加载/发送到DB即可。 我的问题是,假设一个实体有2万条记录,哪一条更好。拥有JSON和反序列化,还是拥有一个巨大的
静态只读类[]
? 我的目标是为同一件事提供一种统一的数据存储方法,而不是不同类型的文件

编辑:我的问题显然没有得到很好的解释,所以这次我会举个例子。我有两个选项来加载数据: 一个Json:

每个项都被反序列化为一个
UserEntity
,然后存储在数据库中。 但是,也有其他文件用于将数据加载到数据库的相同目的。但在这种情况下,它们的存储方式如下:

     public static class UserSeedData
        {
            public static readonly UserEntity[] UserData = {
                new UserEntity{
                 Id = "56d0bdbe-25be-4ea8-a422-dc302deee962", 
                 Name = "C-1", 
                 LegacyId = 1
                },
                new UserEntity{ 
                 Id = "7bf2e997-8a8b-43c9-ba08-1770cd3adb38", 
                 Name = "C-2", 
                 LegacyId = 2
                }
            };
        }
我的问题是,加载和序列化JSON//加载静态类
UserSeedData
以将其插入数据库中,哪个更快,或者两者之间是否有任何区别

我关注的是反序列化部分,而不是提交到DB。这是一个遗留系统,目前正在使用两种方式加载数据。我只是试图通过定义哪种方法更好来规范流程

最后,提交给DB的代码是:

从JSON:

List<UserEntity> users = JsonConvert.DeserializeObject<List<UserEntity>>(File.ReadAllText("Users.json"));

            foreach (var userData in users)
            {
                _db.Add(userData);
            }

您的瓶颈将是DB编写,而不是C#代码,因此您应该集中精力提高性能/做这里最好的事情。这将取决于您的数据、模型、数据库技术等。这就引出了一个问题:为什么要在数据库中存储JSON,请使用适当的列和表。什么是
静态只读类[]
,它是某个类的数组,还是其他类型的集合(为什么使用数组而不是
字典
)?为什么它是
静态的
只读的
相关呢?@Charlieface我用更多的细节编辑了我的问题。请检查20K记录对于JSON和DB来说都不是很大。对于这样的数量,性能对于任何合理的代码来说都不会是一个明显的问题。只要使用你认为更可读的东西就行了。我明白了,所以你是通过EF将数据存储在普通的表中。如果我理解正确的话,您的意思是用上面的代码生成整个20K记录。静态类几乎肯定更快,但速度可能不是很快,而且IMHO更难处理。第三种选择是首先将数据保存在数据库中。另外,有多少数据可以动态生成,比如Id号?
List<UserEntity> users = JsonConvert.DeserializeObject<List<UserEntity>>(File.ReadAllText("Users.json"));

            foreach (var userData in users)
            {
                _db.Add(userData);
            }
    foreach (var userData in UserSeedData.UserData)
    {
        _db.Add(userData);
    }