我创建了一个管理酒店、客房、预订和客户的应用程序。在第一个版本中,我使用纯 MySQL 命令与数据库进行通信并且运行良好,但实现起来非常困难,主要是当我需要更改属性名称或数据库中的顺序以及复杂实体中的相关命令时,以及取得结果的速度也很慢。所以我尝试使用实体框架来实现它。从那时起,我面临着太多我试图解决的问题。首先,我的应用程序被两个客户端使用,我需要同步数据。EF 正在缓存数据以获得更快的结果,即使它们在数据库中发生更改也是如此。据我所知,EF 不会检查数据是否是最新的,我为此找到的解决方案是:
- 重新加载或分离每个实体——在拥有 300 个房间或 2000 个客户的情况下很糟糕
- 处理和重新创建上下文 - 这是我尝试做的,但它似乎很难实现,因为我的应用程序可以同时有 3 或 4 个窗口,然后我需要在每个 Combobox 中重新加载 ItemSource 并在我使用时列出否则它再次抛出异常,如“上下文已处理”或“实体更改被许多跟踪器跟踪”或“外键未公开”等。同样这样你就会丢失更改跟踪器。
另一个大问题是,当我有一段时间不使用我的应用程序然后访问试图通过延迟加载获取的实体的属性时,如果达到连接或命令超时,它可能会崩溃。也许它可以通过异常处理来解决,但我认为 EF 可以管理这些事情。
问题是我需要更改跟踪器来更新实体,我还使用 MVVMlight 和我在 Internet 上通过 UnitOfWork 找到的通用存储库。 https://cpratt.co/truly-generic-repository/
我的应用程序是 WPF 4.7.2
有什么建议吗?我应该使用其他框架与数据库通信吗?我应该使用其他类型的数据库吗?其他编程语言?
其他