[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?
[Key]
本身几乎什么都没有;它需要其他代码(通常是库代码)来检查它是否存在,并推断出一些特殊的含义——大概是在由某些 ORM 处理时“将其视为主键”。它不会更改 C# 编译器或 .NET 运行时的任何部分 除了 明确检查它的那些部分。例如,它不会改变对象相等或比较的工作方式。只有极少数属性直接影响代码的行为方式。
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?
[Key]
本身几乎什么都没有;它需要其他代码(通常是库代码)来检查它是否存在,并推断出一些特殊的含义——大概是在由某些 ORM 处理时“将其视为主键”。它不会更改 C# 编译器或 .NET 运行时的任何部分 除了 明确检查它的那些部分。例如,它不会改变对象相等或比较的工作方式。只有极少数属性直接影响代码的行为方式。