我想知道我是否做出了正确的决定。我正在开发一个应用程序,它允许用户混合来自本地数据库(可能是 SQL CE 或 SQLite)和来自远程共享数据库(很可能是 MySQL)的数据库条目。理想情况下,它必须灵活并与多种数据库服务器类型兼容(根据初始配置静态地,而不是动态地混合多种类型),但这不是一个阻碍。
代码是 C#、.NET 4。
自然,我在考虑 NHibernate,因为它在 3.0 版中具有 LINQ,代码可读性和效率的一个优势,并且模型优先的方法比实体框架更自然。它还有混合数据库部分的碎片,应该更容易处理。另一个选项是 EF 4,否则我会更喜欢它,因为它在 .NET 上下文和 Visual Studio 中得到完全支持,并且在那里有一个充满希望的未来。
Shards足够成熟了吗?它已经停留在 3 beta 很长一段时间了,看起来像是一个死项目,人们是否已经部署了基于此扩展的专业应用程序?它有未来吗?或者还有其他选择吗?
NHibernate 3 在 Mono 上运行吗?我认为是这样,但实际确认会很棒。如果必须开发 Web 服务器作为替代接口,这将是 EF 的另一个优势。
提前感谢您提供任何信息或反馈!
更新 1
显然 .NET 4 是一个问题,为了使用 NHibernate,.NET 3.5 更明智。此外,SQLite 和 SQL CE 或框架的其他部分(如 WPF)显然存在问题。
NHibernate 是否允许跨不同数据库类型(例如 MySQL 和 SQLite)进行分片?
所以我开始相信 EF 4 对客户端来说更安全,而 NHibernate 在可能的 ASP.NET 接口方面更安全。