4

我正在开发一个有时连接的 CRUD 应用程序,该应用程序将主要由社会工作者和护士团队 (2-4) 使用,以计划的形式跟踪患者信息。该应用程序是在我之前创建的 ASP.Net 应用程序的重新可视化。4 个数据库中大约有 200 个表。Web App 版本严重依赖 SP,但由于此版本是一个 winform 应用程序,它将指向本地数据库,我认为没有理由继续使用 SP。另外值得注意的是,我曾计划使用合并复制来处理同步部分,这两者似乎存在一些问题。

我试图了解 DAL 使用什么方法。我最初计划使用 LINQ to SQL,但我读过一些花絮,说明它在有时连接的设置中不起作用。因此,我一直在尝试阅读和尝试多种解决方案;SubSonic、NHibernate、实体框架。这是一个相对简单的应用程序,并且由于“迫在眉睫”的版本 3 重新设计,这项工作可能是临界“一次性”。这里的重点是尽快启动和运行桌面版本。

我在这里要问的是任何有任何使用这些技术(或我没有列出的技术)经验的人来借给我你来之不易的智慧。在你看来,我最好的方法是什么?关于创建此类应用程序的任何其他见解?我真的在为这个程序的 DAL 部分苦苦挣扎。

谢谢!

4

4 回答 4

1

如果存储过程执行您希望它们执行的操作,我不得不说我怀疑您是否会通过丢弃它们并重新实现它们来获得好处。此外,在将数据复制回主数据库时,是否使用存储过程或 LINQ to SQL 样式的数据访问并不重要,因此担心使用哪个 DAL 似乎是一个红鲱鱼。

有时连接的应用程序的棘手部分是提出一个好的冲突解决系统。我的建议:

  • 始终使用 RowGuids 作为表的主键。如果您始终拥有唯一键控的新记录,则合并复制效果最好。
  • 意识到合并复制只能做这么多:它非常适合将不同系统中的新数据整合在一起。它甚至可以找出单方面的更新。它不能神奇地确定你的新记录和我的新记录实际上是一样的,也不能在没有人为干预或优先规则的情况下真正处理双方的变化。
  • 因此,您将需要“匹配”规则来解析声称是新的但实际上不是的记录。请注意,这是一个模糊的步骤:您很少能依靠唯一的密钥在双方都输入完全相同且没有错误。这意味着在您的许多指标相同或相似的情况下进行加权匹配。
  • 用于解决冲突并将“新”记录与原始记录匹配的用户界面需要易于操作。我使用的东西看起来类似于许多源代码控制系统使用的经典三路合并:记录 A、记录 B、合并记录。他们可以通过单击标题按钮将合并记录默认为 A 或 B,也可以通过单击它们来选择每个字段。最后,Merged Records 字段可供编辑,因为有时您需要从 AB获取部分地址(例如)。

这些都不会对您的数据访问层产生丝毫影响:这都是比您的 DAL 更低级别(合并复制,由数据库本身提供)或更高级别(冲突解决,由您的业务规则提供用于解决)。

于 2009-03-18T16:12:24.393 回答
0

如果您可以在本地安装数据库系统,请选择您熟悉的东西。我认为最大的问题是同步和合并部分。您必须考虑几种可能性: 更改了其他人在服务器上删除的内容。谁来决定?

自己从来没有用过 Sync 框架,只是看了一篇文章。但这可能会给你一个坚实的基础。但是,无论您采用哪种方式访问​​数据,业务逻辑的解决方案都可能会产生更广泛的影响......

于 2009-03-09T19:44:42.283 回答
0

微软在 2004 年推出了一个名为 issueVision 的示例应用程序。
http://windowsclient.net/downloads/folders/starterkits/entry1268.aspx

在 joelonsoftware.com 的旧线程上找到链接。 http://discuss.joelonsoftware.com/default.asp?joel.3.25830.10

其他想法...
移动宽带呢?明天可以使用几张 3G 蜂窝卡,您的应用无需更改大页面/图形。

现场使用的 Excel 电子表格。DTS 或 SSIS 将数据导入应用程序。虽然创建了“更好”的解决方案。

祝你好运!

于 2009-03-10T00:33:23.757 回答
0

如果您所说的 SP 是指存储过程……我不确定我是否理解您试图摆脱它们的原因。考虑到它们快速、经过验证并且已经为您编写(即经过测试)。

当然,如果您正在制作一个模仿原始代码的应用程序,那么保留尽可能多的原始(工作)代码库肯定有好处 - 其中最不重要的是速度。

我会尝试安装数据库的本地副本,然后在连接时将自上次连接期间以来的所有受影响记录推送到主数据库。

于 2009-03-17T15:14:55.637 回答