假设我在业务层中有 Customer,Order,OrderDetail 类(这是我的问题的简化版本)。
我还有一个旧(现有)数据库,它有一个全局表,其中表的每一行都包含Customers-Orders-OrderDetails的信息;例如:
CustomerID,CompanyName,Fax,OrderID,OrderDate,ProductID,UnitPrice,Quantity
(以这种方式,客户在不同的行中有重复的信息)。
将来我会有一个新数据库(使用不同的表Customers,Orders,OrderDetails),我想使用相同的程序。
我想使用 EF CodeFirst 映射到旧数据库,以及将来使用新数据库
哪种解决方案最好?
使用全局类设计包含Customers-Orders-OrderDetails信息的业务层。所以这个类的映射 使用EF4在数据层中使用旧数据库是微不足道的。 将来,我将修改新数据库的业务层和数据层。
使用Customers,Orders,OrderDetails类设计业务层。在这种情况下,是否可以映射这些类到旧数据库的全局表?怎么样 ? (问题是客户订单是一对多)。 将来我只会修改用于映射新数据库的数据层。
答案 0 :(得分:0)
使用第三种方法。如第一种方法中所述加载一个类,但立即将结果转换为第二种方法中的三个类。如果持续更改,将执行相反的操作。将此代码包装在一个地方 - 存储库。您的应用程序将使用三个类,它将不知道它们的持久方式。更改数据库后,您只会从存储库中删除其他转换,并直接使用EF加载和保存的Customer,Order,OrderDetail。