我找到了一个允许长类型的多个字段。但是,我不确定这有多大用处,因为有时我们可能有指南甚至日期。
我也可以修改他以支持我的需求,但这似乎是一个常见的要求,我应该能够找到经过测试、尝试和真实的东西,而不是从头开始创建它。
我背后的主要目的是使用身份映射模式。我相信这种模式或多或少需要身份字段模式来支持它。我将使用 Identity Field 构造作为我的字典的键
有任何想法吗?
谢谢
我找到了一个允许长类型的多个字段。但是,我不确定这有多大用处,因为有时我们可能有指南甚至日期。
我也可以修改他以支持我的需求,但这似乎是一个常见的要求,我应该能够找到经过测试、尝试和真实的东西,而不是从头开始创建它。
我背后的主要目的是使用身份映射模式。我相信这种模式或多或少需要身份字段模式来支持它。我将使用 Identity Field 构造作为我的字典的键
有任何想法吗?
谢谢
我认为要为多列 PK 实现类似的模式,您只需要在您的类上为表上的每个 PK 列创建一个字段/属性。
例如,如果您有一个带有 PK 的“消息”表,其中包含一个 long、一个 guid 和一个日期时间,那么您的类只需要包含一个 long、Guid 和一个 DateTime 属性。
您可能还希望使用这些 PK 字段为对象实现 Equals() 和 GetHashCode(),因为您希望这些对象在数据库方面进行比较,而不是在对象的内存地址方面进行比较。GetHashCode 很重要,因为您要确保具有相同 PK 属性的对象产生相同的哈希码。要实现 GetHashCode,我建议在这里查看 Jon Skeet 的答案: What is the best algorithm for an overridden System.Object.GetHashCode?
Fowler 的“身份字段”模式可能假设您的表有一个代理 PK 列,这就是他以他的方式指定它的原因。
查看S#arp 架构。当您从他们的Entity
对象继承时,您可以使用DomainSignatureAttribute
. 然后,这些属性将被视为对象在 的实现中的标识,Equals
并GetHashCode
在Entity
.