检查 int 属性 是否有来自 HTTP 请求的值分配给它

Check if an int property has value assigned to it coming from an HTTP request

各位程序员大家好,

我有一个简单的域表示如下:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Quote> Quotes { get; set; } = new List<Quote>();
}

public class Quote
{
    public int Id { get; set; }
    public string Text { get; set; }
    public Person Person { get; set; }  // Just a navigation property.
    public int PersonId { get; set; }   // The foreign key for Person.
}

我正在 ASP.NET Core 中的一个 PUT 端点上工作,它从 HTTP 请求的主体中获取一个 Quote 对象以更新引用文本。但是,我想确保说这句话的人不会随文本一起更改。

当作为 JSON 传递时,对象如下所示:

{
    "id": 69,
    "text": "nice quote"
}

由于不一定要包含 PersonId,它作为 null 发回,因此在与当前值比较以查看它是否不同时我必须忽略它,但是 C#编译器不允许我这样做,因为整数是不可为 null 的值类型,使 PersonId == null 成为无意义的语句。

所以我的问题是:有没有办法在不使用 POCO class 中的 int? 的情况下检查整数的“无值”?

如果需要任何进一步的信息,请告诉我。谢谢。

您可以检查 int 的默认值,即 0。我假设在某种数据存储中,您的人员 ID 永远不会等于 0(甚至小于 0 ).

public void Put(Quote quote) 
{
   if (quote.PersonId == default) 
   {
      // person id is the default value of int (0)
   }
}