【发布时间】:2010-01-28 09:41:04
【问题描述】:
我正在创建一个使用 NHibernate 进行对象存储的简单项目管理系统。底层数据库是 SQL express(至少目前用于开发)。
客户端在台式机或笔记本电脑上运行。我知道我可以使用网络服务并将数据库仅存储在桌面上,但这会强制桌面始终可用。
我目前正在考虑复制数据库,有两个具有“不同数据”的实例。澄清一下,我们在这里谈论的不是一个高效的应用程序,它是一个原型。
实现这个非常简单的一种方法是以下过程:
- 客户端:检查桌面数据库是否可用(通过 Web 服务)
- 客户端:如果是,使用桌面存储,这里没问题
- 客户端:如果没有,使用自己的数据库作为存储
- 客户端:定期轮询桌面,一旦启动,同步
- 客户端:切换到桌面存储
- ...
- 桌面:在检查所需同步之前不要尝试任何数据库操作
- 桌面:如果需要同步,请执行...
我现在的问题是,您将如何同步?假设 4 或 5 种类型的对象,都具有 GUID 作为标识符。您是否总是手动“延迟加载”某种类型的所有对象并将它们提供给数据库。如果客户端数据库可能较新且不同步,您是否会始终删除整个桌面数据库?
再次强调,我并没有假设任何冲突或过时的数据,我基本上只是想“从客户端复制整个数据库”。你会为此使用 NHibernate 吗?或者你会分开复制过程吗?
当我想到它时,我的问题归结为:
NHibernate 有什么功能吗:
SyncDBs_SourceWins_(SourceDB, TargetDB)
感谢您的帮助, 克里斯
【问题讨论】:
-
我认为复制可以帮助你,但我不确定 SQL Express 是否支持复制
-
我可以切换到 SQL2008 专业版。谈论打破车轮上的苍蝇:-)
标签: c# nhibernate