【问题标题】:Design extended properties for entity with complex data inside为内部具有复杂数据的实体设计扩展属性
【发布时间】:2026-01-07 00:35:02
【问题描述】:

我有设计问题。我有诸如“人”之类的实体。 Person 具有以下属性:FirstName、LastName、Gender、BirthDate、...。 最终用户在应用程序中创建人员时可能需要定义数据库表模式(或类人员)中未定义的另一个属性。例如:最终用户需要定义“property1”,它是一个字符串属性。或者不需要定义“proerty2”它的图像,或者需要定义“property3”它的复杂类型。

请将您的设计解决方案分成两个层次: 1-数据库表设计
2级设计

技术:.NET Framework、SQL Server、WCF(所有实体必须通过网络进行序列化,扩展属性中的特殊复杂数据)
谢谢你。

【问题讨论】:

  • 我们不做“发送代码”或“发送设计”,来吧。
  • 好的。请在这里写下您的解决方案!!!
  • 我认为 Neils 想说的是,您必须为自己思考并自己完成工作,我们会为您提供帮助 - 但不是为您完成工作。

标签: architecture


【解决方案1】:

这是您的入门指南,但更多信息会有所帮助,例如您正在使用的平台。

您可以尝试值/键对方法,但您需要进一步扩展此方法,以便可以为不同的实体实例分配不同的值。

在您的数据库中,您可能有一个表:

  • 唯一的行 ID
  • 实体 ID
  • 属性键
  • 财产价值

如果您要将其重用于其他实体类型,则需要一个额外的列来保持这些类型的分离。

如果您在 .Net 中工作,您可以设计接口来描述您希望在 API 级别使用的某些属性。

您可以通过充当“属性实用程序”的类访问数据库中的属性,这将由实体内部或创建它们的工厂使用。

【讨论】:

  • 它非常笼统。如何存储复杂数据并通过网络对其进行序列化?
  • 如果您有复杂的数据类型,您可以将其序列化为 xml 并存储或发送您认为合适的数据。我以前做过,但只是在一个完全基于.net 的系统中。试试看这里:google.co.nz/…
【解决方案2】:

这看起来像Entity-Attribute-Value model。寻找适合您的技术堆栈的实现。

【讨论】: