C#桌面应用、MAUI应用与SQL Server协同开发方案咨询
解决方案与实现指南
1. 是否采用单一解决方案?
必须使用单一解决方案。这种方式能统一管理所有项目,大幅降低共享代码的引用和维护成本,后续数据库迁移到云服务器时,仅需修改核心类库的配置,无需在多个解决方案间反复调整。
2. 数据访问类的共享与文件夹结构设计
数据访问类共享
完全可以共享你已创建的数据库操作类库,只要该类库基于.NET Standard 2.0+ 或 .NET 6/7/8(MAUI支持的目标框架)。直接让MAUI项目引用这个类库即可,桌面端和移动端共用同一套数据访问逻辑,无需分别实现——这正是类库的核心价值,避免重复造轮子。
推荐的项目结构
你的解决方案可按以下结构组织:
YourAppSolution/ ├── YourApp.Core/ # .NET类库,存放所有共享代码 │ ├── DataAccess/ # 数据库连接、DML操作类(你已实现的代码) │ ├── Models/ # 实体类(如User、Order等,两端共用) │ ├── ViewModels/ # 共享的MVVM视图模型 │ └── Services/ # 业务逻辑服务类(如数据校验、业务规则处理) ├── YourApp.Desktop/ # 原有桌面应用项目(引用YourApp.Core) │ └── UI/ # 桌面端专属UI代码(WinForms/WPF等) └── YourApp.MAUI/ # MAUI项目(引用YourApp.Core) ├── Platforms/ # MAUI各平台专属代码,此处主要为Android └── Resources/ # MAUI的XAML布局(使用DevExpress控件)
3. MAUI中实现MVVM与避免代码重复
MVVM实现方案
采用CommunityToolkit.Mvvm(微软官方推荐的轻量MVVM库)实现:
- 在
YourApp.Core类库中安装该NuGet包,所有ViewModel继承ObservableObject,用RelayCommand处理命令逻辑。 - MAUI项目和桌面项目均引用
YourApp.Core,直接使用其中的ViewModel,无需各自编写。 - 若桌面端之前未采用MVVM,也可基于Core的ViewModel改造,统一业务逻辑。
避免代码重复的关键
- 所有业务逻辑、数据访问、ViewModel都放在Core类库,UI层仅负责界面展示和用户交互。
- 由于桌面与MAUI的UI控件不兼容(你提到DevExpress控件仅支持MAUI),两端的UI代码需分开编写,但绑定的ViewModel完全一致——比如桌面端用WPF的TextBox绑定ViewModel的
UserName属性,MAUI用DevExpress的DxTextBox绑定同一个属性,逻辑完全复用。
4. 数据库共享与未来云迁移注意事项
- 目前本地SQL Server给MAUI Android访问:需确保Android设备与SQL Server处于同一局域网,开启SQL Server的远程访问权限,防火墙开放1433端口,连接字符串用桌面机器的IP地址替代
localhost。 - 未来迁移到云服务器:仅需修改
YourApp.Core中的数据库连接字符串(可放在配置文件如appsettings.json中),桌面和MAUI项目无需任何改动,重新发布即可。
内容的提问来源于stack exchange,提问作者sandeep jakhotya
相关产品推荐
相关产品推荐

