C# 如何为具有多个客户端的应用程序使用实体框架
我创建了一个管理酒店、房间、预订和客户的应用程序。在第一个版本中,我使用纯MySQL命令与数据库通信,工作得很好,但很难实现,主要是当我需要更改属性的名称或数据库中的顺序以及复杂实体中的相对命令时,而且获取结果也很慢。所以我尝试使用实体框架来实现它。 从那以后,我面对了太多的问题,我一直在努力解决。首先,我的应用程序由两个客户端使用,我需要同步数据。EF正在缓存数据以获得更快的结果,即使它们在数据库中发生更改。据我所知,EF不检查数据是否为最新数据,我找到的解决方案是:C# 如何为具有多个客户端的应用程序使用实体框架,c#,mysql,wpf,entity-framework,entity-framework-6,C#,Mysql,Wpf,Entity Framework,Entity Framework 6,我创建了一个管理酒店、房间、预订和客户的应用程序。在第一个版本中,我使用纯MySQL命令与数据库通信,工作得很好,但很难实现,主要是当我需要更改属性的名称或数据库中的顺序以及复杂实体中的相对命令时,而且获取结果也很慢。所以我尝试使用实体框架来实现它。 从那以后,我面对了太多的问题,我一直在努力解决。首先,我的应用程序由两个客户端使用,我需要同步数据。EF正在缓存数据以获得更快的结果,即使它们在数据库中发生更改。据我所知,EF不检查数据是否为最新数据,我找到的解决方案是: 重新加载或分离每一个实体
另一个我知道你不会想听这个问题,但这个问题没有“一刀切”的答案。人们把整个职业生涯都奉献给解决这样的问题 我在航空业工作,全世界有成千上万的信息亭、终端、手机应用程序等,都在访问同一个数据库同时,他们中的许多人需要实时通信,尽管他们坐在最严密的防火墙后面…和最脆弱的机场网络后面…你会看到。作为一个非常粗略的指导原则,我倾向于通过web服务器公开数据库,并让所有东西都通过web服务器连接。对于实时内容,我使用WebSocket(当网络不支持长轮询时,可以模拟长轮询),但非关键内容通常可以通过基本的REST调用来处理;这两种技术都有足够的JavaScript支持,这对于何时(而不是如果)很重要你最终会开发任何类型的webapp组件。一般来说,我避开SOAP;如果你已经控制了通信渠道的双方,那么没有必要增加额外的复杂性,除非你有理由这样做 这样做的好处是,您最终会得到一个包含所有项目共享的所有模型的单个项目,这反过来会导致出色的类型安全性和代码重用。组件之间的序列化通常由.NET自动处理,并且很容易使您的数据库层受到压力s在真实环境中进行测试。您还有一个集中的日志记录和报告生成点,这是您的客户在某个时候需要的(分析本身就是一个完整的领域)。另一方面,添加专用服务器会增加额外的复杂性和潜在的故障点,如果必须在本地托管,则会增加安装过程的复杂性,可能还会增加客户端网络配置的复杂性
这是一个答案,还有很多。一旦你开始遇到服务器负载和冗余等问题,一切都变得非常“有趣”“…我理解这一点。一个完全不同的实现是在服务器上完成所有工作人员的工作,但现在我只使用服务器存储数据库,而我在客户机上完成所有计算。这就是为什么我更愿意尝试使用实体框架或类似的方法来完成这项工作。