优雅的linq润滑在复杂的业务环境中(上)

业务环境:

SAP系统的物料主数据每天需要同步(传输)到WMS系统中去,数据量大概是一万条,每条60个字段。


一直以来,接口的开发人员只会关注接口的数据传输,但这一次情况不一样了。


这次我做了一个全套:


1. SAP中写RFC函数(设计数据抓取逻辑)

2. C# WINFORM程序传输(设计程序功能)

3. WMS 的数据库设计及后续处理


整个数据的来龙去脉,这三部分内容都由我来完成,这使我从更高的角度考虑怎么去满足这个需求,设计得简单再简单。

加之后续BI项目伊始,BI系统对SAP的数据抽取也会大量使用此接口功能,所以我决心做得完美一点,以后也是方便自己。


功能设计:

SAP部分: 推翻以前顾问,对其它系统传主数据时,使用的按日期抓取数据的逻辑(原设计缺陷是接口程序停工一次,可能漏掉一天中新更新的数据)。

每次抓取全部主数据,今天的服务器硬件处理一万条60个字段的数据,简直不值得一提。


接口程序部分:

第一步,SAP的物料主数据表,调用一次RFC获得

第二步,获取WMS现有的物料主数据表

第三步,比较SAP和WMS的数据,主键相同的行,用SAP行去修改WMS行(可选记录修改的字段,修改前的值,修改后的值,存入专门的一张字段修改表中)

第四步,SAP去比较WMS的数据,如果主键不同,应为新增数据,对WMS数据库表做插入操作


全部功能简单的说,就是SAP对WMS数据,相同的修改,不同的插入,并带有记录功能。这就是物料主数据更新策略。


要实现上述的功能,有很多技术,而我只想找到最简单的那一种。


linq to object在之前的对象服务器中用的比较熟了,但这次应该是需要linq to SQL.


百度了几个网页,发现果然linq to SQL就是我想要的,不去拼接SQL,不去写那60个字段,不去配置ORM。。。。连一下数据库,拖个表对象,

程序中就可以直接使用,呵呵。


一开始,我把2个系统的主数据表,放到2张C# 的datatable中,然后比较相同的放入第3长table中,不同的放第4张table中,在更新数据库时遇到了问题,

百度了上百个页面,阳光明媚的整整一个周五都浪费了,硬是没搞出来。周6,我换了一个思路,linq出来的var和list就可以处理了,不必要搞成datatable。

问题迎刃而解,而且使用的linq foreach来更新,就我看来,这点数据,我是完全可以牺牲一点点性能来换得高级语言的优雅和简洁。

现在我写程序,编码的时间和工作量才是我首要关注的。


最后即使用linq foreach更新数据库,5000条数据也只需要几分钟完成,还是在家的笔记本上测试。


星期一,我会到实际环境继续测试,我想问题不大。该接口程序被命名为SAPsend,估计以后会大量出现在我们的BI项目中。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值