|
|
1
3
你好像在问两个问题。第一个问题是:如何使用棱镜来确保数据库特有的模式存在于数据库中,如果没有,则创建它。第二个问题是:如何最好地构造数据层,以便在模块化应用程序中分离数据层。 要回答关于如何进行模块架构检查的第一个问题,我要说: 如果你经历过棱镜,你无疑已经想出了一些方法来完成它。与编程中的任何事情一样,有很多方法可以实现它。如果我需要用Prism来实现这一点,我可能会执行以下操作:在模块程序集中创建一个类(MyPlugInModule.cs),它实现了Microsoft.Practices.Prism.Modularity.I module接口。然后,我将代码放入构造函数或初始化方法中,该方法检查数据库以查看模块模式是否存在。如果没有,那么创建它。 为了回答关于如何最好地构建数据模块的第二个问题,我要说: 正如Goblin所说,这实际上取决于您要实现的模块化类型。如果您正在销售此应用程序,并且希望将模块作为独立的软件包销售,那么在最终用户付款之前,您可能不希望创建支持软件包的数据模型。 您应该能够使用实体框架来确保您的模块能够与基础应用程序模块共享实体。此外,根据您的需求,或者如果您的体系结构允许,您可能希望将模型/数据层抽象为与模块不完全对齐的程序集。这将减少代码重复和依赖性。 在我目前正在开发的应用程序中,我们将WPF与MVVM、PRISM与MEF以及WCF数据服务结合使用。我们的客户机模块共享一个数据程序集,该程序集与位于基本应用程序模型(身份验证/角色表、应用程序数据等)顶部的主要数据服务端点通信。当在数据库中创建特定于模块域的表时,将在服务器上创建新模型和服务端点,并在客户端上创建单独的程序集以与数据模型通信。 如果特定于模块的模型发生更改,则只需更改受影响的组件,因为特定于模块的数据封装在其自己的服务和客户端程序集中。从测试、安全性等方面来看,从隔离的角度来看,这是一个更好的选择。当然,缺点是如果基础应用程序模型发生更改,则必须更新所有相关的特定于模块的实现。 但这又取决于你的要求。如果您坚持使用带有MEF、模块化设计模式和实体框架4的PRISM 4,那么您应该能够想出一个很好的解决方案,即模块化而不紧密耦合。 |
|
|
2
2
如果您的模块是真正独立的,那么每个模块一个数据库如何?如果你的模块之间需要外键——它们本质上没有被真正封装——我会从一开始就利用整个数据库。更容易在更新之间保持模式最新。 模块化有多种风格——业务视角(按模块付费)、责任方面的模块化等等。 我的5美分:) |
|
|
3
0
此响应适用于任何希望看到连接本地数据库的代码的人。它对我有效,不确定它是否是最佳实践。 我在用棱镜,我需要让我的数据库工作。这就是我所做的。实体框架似乎“只是工作”把数据库放在某个地方。 引导程序.cs文件:
我的AppDatabaseContext.cs文件:
在我的一个视图模型中:
|
|
|
scottyaim · Xamarin窗体、棱柱体和工具栏项? 8 年前 |
|
|
gr1d3r · MVVM-从视图模型关闭窗口 8 年前 |
|
|
Bigeyes · 将数据传递给父视图--视图之间的通信 8 年前 |
|
|
Bishoy · 处理冗长的异步任务并通知用户 8 年前 |