c# – 有时连接的CRUD应用程序DAL
作者:互联网
我正在开发一个有时连接的CRUD应用程序,该应用程序主要由社会工作者和护士团队(2-4)用于以计划的形式跟踪患者信息.该应用程序是在我的时间之前创建的ASP.Net应用程序的可视化. 4个数据库中大约有200个表. Web App版本很大程度上依赖于SP,但由于这个版本是一个winform应用程序,它将指向本地数据库,我认为没有理由继续使用SP.另外值得注意的是,我曾计划使用Merge Replication来处理Sync’ing部分,这两者似乎存在一些问题.
我试图了解用于DAL的方法.我原本打算使用LINQ to SQL,但我已经阅读了一些说明它在有时连接的设置中不起作用的花絮.因此,我一直在尝试阅读和试验各种解决方案; SubSonic,NHibernate,实体框架.这是一个相对简单的应用程序,并且由于“迫在眉睫”的版本3重新设计,这种努力可能是临时性的“一次性”.这里的重点是尽快启动和运行桌面版本.
我在这里要问的是任何有经验的人都可以使用这些技术(或者我没有列出的那些技术)来借给我你辛苦赚来的智慧.在您看来,对我来说,最好的方法是什么?有关创建此类应用程序的任何其他见解?我真的很挣这个程序的DAL部分.
谢谢!
解决方法:
如果存储过程按照你的意愿行事,我就不得不说我怀疑你会把它们扔掉并重新实现它们.此外,在将数据复制回主数据库时,如果使用存储过程或LINQ to SQL样式数据访问,则无关紧要,因此担心您使用哪个DAL似乎是一个红色的鲱鱼.
关于有时连接的应用程序的棘手部分是提出了一个良好的冲突解决系统.我的建议:
>始终使用RowGuids作为表的主键.如果始终具有唯一键控的新记录,则合并复制最有效.
>意识到合并复制只能做很多事情:它非常适合将不同系统中的新数据放在一起.它甚至可以找出单方面的更新.它不能神奇地确定你的新记录和我的新记录实际上是相同的,也不能真正处理双方的变化而没有人为干预或优先权规则.
>因此,您需要“匹配”规则来解析声称是新的记录,但实际上并非如此.请注意,这是一个模糊的步骤:您很少能依靠唯一键实际在两侧输入完全相同且没有错误.这意味着给出加权匹配,其中许多指标是相同或相似的.
>用于解决冲突并将“新”记录与原始记录匹配的用户界面需要易于操作.我使用的东西看起来类似于许多源控制系统使用的经典三向合并:记录A,记录B,合并记录.他们可以通过单击标题按钮将合并记录默认为A或B,也可以通过单击它们来选择每个字段.最后,Merged Records字段可以打开进行编辑,因为有时您需要从A和B中获取部分地址(比方说).
这些都不会影响您的数据访问层:这些都是较低级别(合并复制,由数据库本身提供)或更高级别(冲突解决,由您的业务规则提供解决方案)而不是您的DAL.
标签:c,linq,winforms,data-access-layer 来源: https://codeday.me/bug/20190710/1423989.html