【发布时间】:2021-06-05 09:19:16
【问题描述】:
程序员朋友们,您好,
我有一个简单的域表示如下:
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? 来检查整数的“无价值”?
如果需要任何进一步的信息,请告诉我。谢谢。
【问题讨论】:
-
如果您不想发回 PersonId - 不要这样做。创建另一种类型来表示没有 PersonId 属性的返回 Quote。
-
我在链接的帖子中尝试了该方法,虽然它有效,但现在我在响应中发送了该布尔字段以及相关字段 LOL,这有点尴尬。无论如何,感谢您的洞察力。不过还没有尝试过@Fabio 的解决方案。
标签: c# http asp.net-core asp.net-core-webapi .net-5