我有一个带有 EF Core 2.0.1 的 xamarin 应用程序,并且遇到了一个奇怪的问题,即外键在我的 SQLite 数据库中行为不正常。
看起来外键可以保存,但是当我恢复实体时,外键属性将始终为空。我检查了 SQLLIte 数据库文件,它在表上有一个外键约束,并且启用了 PRAGMA。
我在这里做错了什么?
我的模型带钥匙
/// <summary>
/// The id of the form template
/// </summary>
public int TemplateId { get; set; }
/// <summary>
/// Link to the template
/// </summary>
[ForeignKey("TemplateId")]
public virtual FormTemplate FormTemplate { get; set; }
Run Code Online (Sandbox Code Playgroud)
映射的模型
/// <summary>
/// Identifier for the form template.
/// This comes from the API.
/// </summary>
[Key]
public int Id { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的数据上下文初始值设定项
/// <summary>
/// …
Run Code Online (Sandbox Code Playgroud) 当涉及到 C# 中的标准数字格式字符串时,我遇到了一些非常奇怪的事情。这可能是一个已知的怪癖,但我找不到任何记录它的东西,而且我无法找到一种方法来实际获得我想要的东西。
我想取一个像 17.929333333333489 这样的数字并将其格式化为不带小数位。所以我只想要“17”。但是当运行这段代码时。
decimal what = 17.929333333333489m;
Console.WriteLine(what.ToString("F0"));
Run Code Online (Sandbox Code Playgroud)
我得到这个输出
18
Run Code Online (Sandbox Code Playgroud)
查看 Microsoft 的文档,他们的示例显示了相同的输出。
https://msdn.microsoft.com/en-us/library/kfsatb94(v=vs.110).aspx
// F: -195489100.84
// F0: -195489101
// F1: -195489100.8
// F2: -195489100.84
// F3: -195489100.838
Run Code Online (Sandbox Code Playgroud)
这是一个显示奇怪问题的代码示例。
http://csharppad.com/gist/d67ddf5d0535c4fe8e39
此问题不仅限于“F”和“N”等标准问题,还包括“#”等自定义问题。
我如何使用标准的“F0”格式化程序而不是将其四舍五入?