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

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

我在这里请求的是,任何有使用这些技术(或我未列出的技术)经验的人都可以借给我您来之不易的智慧。在您看来,我应该追求的最佳方法是什么?关于创建此类应用程序还有其他见解吗?我真的很难处理这个程序的 DAL 部分。

谢谢你!

有帮助吗?

解决方案

如果存储过程按照您想要的方式执行,我不得不说我怀疑您是否会通过丢弃它们并重新实现它们来获得好处。此外,当需要将数据复制回主数据库时,是否使用存储过程或 LINQ to SQL 样式数据访问并不重要,因此担心使用哪个 DAL 似乎是转移注意力的事情。

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

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

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

其他提示

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

我自己从未使用过Sync框架,只是阅读了一篇文章。但这可能会为你奠定坚实的基础。但是,每次使用数据访问时,businesslogic的解决方案可能会产生更广泛的影响......

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

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

其他想法......
移动宽带怎么样?一些3G手机卡明天可以使用,你的应用程序不需要大页面/图形的更改。

该字段中使用的Excel电子表格。 DTS或SSIS将数据导入应用程序。而“更好”的是解决方案已创建。

祝你好运!

如果SP是你的意思是存储过程...我不确定我理解你的理由是试图摆脱它们。考虑到它们是快速的,经过验证的,并且已经为您编写(即经过测试)。

当然,如果你正在创建一个模仿原作的应用程序,那么尽可能多地保留原始(工作)代码库有一定的优点 - 其中最重要的是速度。

我尝试安装数据库的本地副本,然后将所有受影响的记录从上次连接的时间段推送到主数据库,当它连接时。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top