2010-11-15 69 views
1

让我设置我的LOB场景。我应该复制我的实体模型吗?

我正在重写我们的核心业务应用程序。要求是我创建一个内部可用的应用程序(我想使用Silverlight),我们的员工每天使用它。我还需要提供一个可用于输入订单,获取发票等的SOAP服务。

我也会这样做,所以当我在新的SQL Server数据库中更新记录时,我需要请确保更新我们的传统SQL Server。

因此,创建一个将从新的SQL服务器提取数据以及将数据写回到2个数据存储的DAL当然有意义。

创建可由Silverlight/RIA和WCF Web服务使用的BLL也是有意义的。

我已经在自己的项目中创建了新数据库的数据实体,并在所有其他项目中使用它。这里的问题是RIA似乎要求我在ASP.Net项目中创建它,以获取Silverlight的元数据。如果没有这个,我需要手动重新创建Silverlight的元数据才能正确访问它。

我的问题是,我应该创建实体模型的重复?一个用于RIA,另一个用于其他任何用途?有一个更好的方法吗?我应该放弃使用RIA并让Silverlight访问WCF服务?或者我应该继续在RIA中复制元数据?

+0

顺便说一句,2/13标为回答的问题有点低,你可能想要改进:) – Basic 2010-11-15 22:57:14

+0

哎呀....这种新的。我会通过并标记它们。感谢您的领导! – Scottie 2010-11-15 23:09:13

回答

1

我们使用实体直接引用存储和数据传输对象(DTO),它们在BLL和WCF/GUI /之间来回传递时几乎是相同的。我们使用地图这AutoMapper意味着有很少的额外工作,但我们并不担心,如果给定的实体附加到上下文/跟踪状态修改/ etc的2间...

编辑:你绝对要尽可能保持您的代码为DRY。就我个人而言,我会考虑在BLL上使用DTO,并且要么在DAL中配置2套存储库(一个RW,只有一个W)。或者甚至有处理2个商店本身的数据集的元库。

如果你还没有使用它,Unity和IoC在这里会对你有实质的好处。您可能还想使用其中一种模块化代码模式,以允许您以不同模式注册[n]个数据存储区,这样当您最终想要淘汰旧商店时,无需做太多工作。

我还怀疑你是否实体需要在ASP.Net中定义 - 你可以简单的能够从你的实体/ DTO项目中引用的DLL适当,并添加适当的标记/配置

+0

只需重新阅读Q,这可能不是合适的答案 - 现在编辑 – Basic 2010-11-15 22:57:40

相关问题