提问人:Nick Farsi 提问时间:6/21/2021 更新时间:6/21/2021 访问量:64
[Key] 特性是否强制 C# 按修饰属性比较实体?
Does [Key] attribute force C# to compare entities by decorated properties?
问:
public class Potato
{
int SomeID { get; set; }
DataTable Potable { get; set; }
[Key]
string PotatoKey { get; set; }
object GrimReaper { get; set; }
}
在比较 2 个土豆时,具有 [Key] 属性是否告诉 C# 为了进行比较,只需比较 PotatoKey?还是我仍然需要明确告诉比较 PotatoKeys?
答:
4赞
Marc Gravell
6/21/2021
#1
[Key]
从字面上看,它本身什么都不做;它需要其他代码(通常是库代码)来检查它是否存在,并推断出一些特殊的含义——大概是“将其视为主键”,当被某些 ORM 处理时。它不会更改有关 C# 编译器或 .NET 运行时的任何部分的任何内容,但显式检查它的部分除外。例如,它不会改变对象平等或比较的工作方式。只有极少数属性直接影响代码的行为方式。
评论
potatoA < potatoB
IComparable<Potato>
potatoA.CompareTo(potatoB)
<
<=
>
>=
potatoA < potatoB
==