【问题标题】:Sync two SqlExpress using NHibernate使用 NHibernate 同步两个 SqlExpress
【发布时间】:2010-01-28 09:41:04
【问题描述】:

我正在创建一个使用 NHibernate 进行对象存储的简单项目管理系统。底层数据库是 SQL express(至少目前用于开发)。

客户端在台式机或笔记本电脑上运行。我知道我可以使用网络服务并将数据库仅存储在桌面上,但这会强制桌面始终可用。

我目前正在考虑复制数据库,有两个具有“不同数据”的实例。澄清一下,我们在这里谈论的不是一个高效的应用程序,它是一个原型。

实现这个非常简单的一种方法是以下过程:

  • 客户端:检查桌面数据库是否可用(通过 Web 服务)
  • 客户端:如果是,使用桌面存储,这里没问题
  • 客户端:如果没有,使用自己的数据库作为存储
  • 客户端:定期轮询桌面,一旦启动,同步
  • 客户端:切换到桌面存储
  • ...
  • 桌面:在检查所需同步之前不要尝试任何数据库操作
  • 桌面:如果需要同步,请执行...

我现在的问题是,您将如何同步?假设 4 或 5 种类型的对象,都具有 GUID 作为标识符。您是否总是手动“延迟加载”某种类型的所有对象并将它们提供给数据库。如果客户端数据库可能较新且不同步,您是否会始终删除整个桌面数据库?

再次强调,我并没有假设任何冲突或过时的数据,我基本上只是想“从客户端复制整个数据库”。你会为此使用 NHibernate 吗?或者你会分开复制过程吗?

当我想到它时,我的问题归结为:

NHibernate 有什么功能吗:

SyncDBs_SourceWins_(SourceDB, TargetDB)

感谢您的帮助, 克里斯

【问题讨论】:

  • 我认为复制可以帮助你,但我不确定 SQL Express 是否支持复制
  • 我可以切换到 SQL2008 专业版。谈论打破车轮上的苍蝇:-)

标签: c# nhibernate


【解决方案1】:

不是 NHibernate,但是 Sync Services for ADO.NET 2.0 怎么样?

-sa

【讨论】:

  • 好吧,只是看了一眼。不确定,但我认为它不能与 NHibernate 结合使用。而且我绝对需要 NHibernate(好的,想要 :-) 只有这个同步的东西才出现,出于“方便的原因”
  • 不,它不是 NHibernate,但应该可以并排使用它们,尽管它绝对不是最好看的。关于在这里整合两个世界的问题尚未得到解答 (stackoverflow.com/questions/1264161/…)。此外,手动操作很乏味。长时间的工作,你肯定会遇到一些奇怪的情况。
  • 好的,我会仔细研究一下同步框架。一点基础研究也无妨……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多