我有一个看起来像这样的字典,它从 json 文件反序列化为 C# 字典
{
"Name": "option1",
"Settings": {
"setting1": 20,
"setting2": 2
}
}
Run Code Online (Sandbox Code Playgroud)
所以我将其反序列化为一个可以工作的对象,但是当我尝试从字典中获取该值时,它变成了 long 而不是 int
if (!settings.TryGetValue("setting1", out object setting))
{
setting = 10;
}
Run Code Online (Sandbox Code Playgroud)
然后我在其他地方做了这样的事情:
if ((int)setting > 10) {//do something}
Run Code Online (Sandbox Code Playgroud)
然后它给了我一个 int64 无法转换为 int32 的错误
反序列化过程:
using (StreamReader reader = new StreamReader(Startup.SettingsPath))
{
SettingsModel settings = JsonConvert.DeserializeObject<SettingsModel>(reader.ReadToEnd()).Applications;
return settings
}
Run Code Online (Sandbox Code Playgroud)
设置型号:
public class SettingsModel
{
public string Name { get; set; }
public IDictionary<string, object> Settings { get; set; }
}
Run Code Online (Sandbox Code Playgroud) 所以我有一个 Entity Framework Core 第一个数据库和一个 .Net Core 应用程序。
我想在创建数据库时向其中添加种子数据。我知道 FluentAPI 有 HasData 方法,但这不是我要找的。
创建数据库时,我想使用随机生成的密码(每次都不同)创建一个用户,该密码将保存在服务器的文件中。
我不能使用 HasData 方法,因为它每次都会创建相同的密码。
所以我的问题是:除了 HasData 方法之外,还有没有其他方法可以将 Seed 数据添加到 Entity Framework Core Code First 数据库中