我有一个 VS2015 解决方案,其中包含一个 webUI 项目和一个充当域的类库项目。类库仅包含 20 个 EF DB First 生成的类(edmx 模型)以及 20 个作用于这些类的 repo。当我需要更改底层数据库时,我会丢弃 edmx 模型并重新生成它。其中一类是Domain.DbEntities.plc
. 我的 webUI 引用了这个域库。
一段时间后,我PlcCommunicator
在解决方案中添加了一个额外的项目,它引用了Domain lib
并且有一些接受Domain.DbEntities.plc
作为参数的方法和一些返回的包装类也使用Domain.DbEntities.plc
. 我的 webUI 项目引用了“PlcCommunicator”项目,一切正常。
解决方案越来越大,当我向它添加更多项目时,它们都引用和使用相同的Domain lib
. 但是现在我添加了另一个名为的项目PlcMonitoringLogger
,我决定创建另一个较小的域,它只是主域的一个子集,它包含 5 个类,这些类也都是 EF DB First 生成的 edmx 类,它们在与Main Domain
. 其中一类是PlcMonitoringDomain.DbEntities.plc
. (注意与 的区别Domain.DbEntities.plc
)
现在我需要我的PlcMonitoringLogger
项目来使用该PLCCommunicator
项目。但PlcCommunicator
适用于Domain.DbEntities.plc
并且PlcMonitoringLogger
只知道PlcMonitoringDomain.DbEntities.plc
. 所以我面临的问题是......我可以更改PlcCommunicator
方法的参数以接受plc
id 而不是Domain.DbEntities.plc
对象,也可以只返回plc
id 而不是Domain.DbEntities.plc
对象。然而,这是正确的做法吗?有什么陷阱吗?优缺点都有什么?另一种解决方案可能是创建一个base plc class
,但这似乎不正确。我想将事物彼此分离,并且创建base
类感觉不对。
我读了一些关于有界上下文的东西。但是我不能也不想立即将我现有的项目更改为使用这种设计模式。不是最后一位,因为我还没有这方面的经验,而且对于初学者来说很难。我认为在有界上下文之外使用某些方面的“婴儿步骤”是最好的方法,而不是进行完全重建!
因此,如果有人对此主题有一些想法或有用的话,请回复!