您的位置:首页 > 其它

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

2016-02-28 21:48 295 查看
业务环境:

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项目中。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: