检查 int 属性是否具有来自 HTTP 请求的值

时间:2021-06-04 23:50:24

标签: c# http asp.net-core asp.net-core-webapi .net-5

程序员朋友们好,

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

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# 编译器赢了不要让我这样做,因为整数是不可为空的值类型,使 PersonId == null 成为毫无意义的语句。

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

如果需要更多信息,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:1)

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

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