小编Chr*_*ice的帖子

实体框架 SQLite 外键适用于保存但不适用于读取

我有一个带有 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# sqlite entity-framework entity-framework-core

5
推荐指数
0
解决办法
3046
查看次数

为什么 C# 中的数字格式字符串在不使用小数 (F0) 时对数字进行四舍五入?

当涉及到 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”格式化程序而不是将其四舍五入?

.net c#

4
推荐指数
1
解决办法
7204
查看次数