我想知道是否有人将 EntityFramework 与 SAP Business One 一起使用?如果是,您如何处理保修。SAP 仅允许通过其 DI 服务器 API 插入/更新/删除,否则您将失去保修。所以如果我只被允许选择我只能使用实体框架来读取数据,对吗?
无论如何,您会建议将 EntityFramework 与 SAP Business One 一起使用,或者是否存在大量数据的性能问题?
问候。
我想知道是否有人将 EntityFramework 与 SAP Business One 一起使用?如果是,您如何处理保修。SAP 仅允许通过其 DI 服务器 API 插入/更新/删除,否则您将失去保修。所以如果我只被允许选择我只能使用实体框架来读取数据,对吗?
无论如何,您会建议将 EntityFramework 与 SAP Business One 一起使用,或者是否存在大量数据的性能问题?
问候。
您绝对不能使用除 DI 之外的任何东西来插入、更新或删除 SAP Business One 数据库中的数据!作为过去 9 年一直与 SAP 合作的人,我诚实的建议是不要尝试。一旦你破坏了数据库,SAP 就不会支持它,你最终会花很多钱来修复它......
撇开保修问题不谈,即使是 SBO 中最简单的操作(比如说,添加一个包含 1 行的发票)也会导致对象模型更新包含至少 10 或 11 个“主要”表和它们自己的相关“次要”表集....启动 SQL Profiler 并在 SBO 客户端中创建发票,并观察生成了多少 SQL,不仅是插入,还有选择......加上 SAP 对所有这些所做的业务逻辑数据对呼叫者完全隐藏。您自己正确建模的机会很少,即零机会....
至于使用 EF 从数据库中读取数据,我也不会打扰 - 您在 SAP 客户端中看到的大部分数据都没有被正确定义的关系取出,这意味着您的模型永远不会完全正确。最好不要使用普通的旧 SQL,无论如何,您可以将这些数据映射到您自己的内存模型中。
在这方面,SQL Profiler 是您的朋友;没有什么可以 100% 准确地告诉您 SBO 是如何做到的,但它至少可以让您通过在客户端执行操作并查看结果查询来访问它使用的相同数据。
也只是为了纠正一点 - 有两种方法可以做到这一点。一种是 DI 服务器,它是一种基于 XML 的服务,另一种是通过 DIAPI,它是一个基于 COM 的库,您可以与您的项目链接并让您以更加面向对象的方式工作(当然,非常“面向对象”的有限价值!)
关于我之前关于不使用 EF 从 SAP 表中读取数据的建议,我发现自己做的越来越多——尤其是使用EF Core Query Types时,正在针对各种表创建视图,以便更轻松地阅读我的应用程序需要的数据。这样做的一大优势是您可以从 SBO 加入多个表并清理列名等。作为视图,它们是只读的,因此可以安全使用。