0

我们需要允许自定义我们的核心产品并在每个客户的基础上添加其他字段,例如人员实体,一些客户想要记录他们最喜欢的颜色等。据我所知,我们无法在运行时根据需要向 EF 添加属性启动时定义的类。每个客户都有自己的数据库,但我们使用所有附加代码为所有客户部署相同的解决方案。然后我们检测他们是哪个客户并运行客户特定的服务等。

现在我想要的最后一件事是分叉我的项目,或者为所有客户添加所有字段。这似乎很可能成为一场噩梦。此外,通常只在非常有限的地方需要额外的字段。也许一些报告,几个屏幕等。

我从 Jermey Miller http://codebetter.com/jeremymiller/2010/02/16/our-extension-properties-story/找到这篇文章,描述了他们如何添加扩展属性并让它们从域到 Web 前端。

有没有其他人使用 EF 实现过类似的东西?效果如何?是否有任何人看过的博客/示例?我不确定我是否正在寻找正确的东西,即使有人可以告诉我我们想要做的事情的通用名称会有所帮助。我猜这是其他人会遇到的问题。

4

1 回答 1

1

链接的问题仍然需要在单个解决方案中进行一些分叉或实现所有可能的扩展,因为您仍在预先创建强类型扩展(= 您预先知道客户想要什么扩展)。它通常不是可扩展的解决方案。如果您想要通用的可扩展解决方案,您必须离开强类型世界并将扩展描述为数据。

您将需要使用一些元模型。您的实体类将仅包含所有客户使用的属性和导航属性到特殊扩展实体(每个可扩展实体的附加表),您可以在其中将附加属性作为名称/值对(您可以添加其他列,如类型、验证等,如果需要)。

这通常会将您的模型的一部分从硬编码场景移动到基于配置的场景,您的客户甚至可以在运行时定义扩展(如果您实现了此类功能)。

于 2012-08-29T12:39:47.740 回答