我是否"Allowed"将默认约束直接添加到 Dynamics 365 中的数据库?



想知道是否有人能帮助Dynamics365的新手。我已经开始研究Dynamics 365的现有实现(内部部署(,目前的开发人员告诉我,在任何情况下,我都不能直接在DB上修改我们实体的表中的列。我只是想将INT列默认为值1。

他们告诉我";动力是一个黑匣子,如果你直接修改,你将触犯法律;。这不可能是真的吧?

谢谢你的建议。

根据Josh的说法,DynamicsSQL数据库确实是一个黑匣子。所有的事情都必须通过API完成,除了在表上创建自定义索引和从;过滤的";视图。

(在线产品预览了新的T-SQL端点,您就可以对在线组织运行SQLselect查询。(

其原因是动力学中的所有事件都经过";平台";通过消息。例如,您可能有在更新帐户时触发的插件或工作流自动化。当平台接收到";更新";消息,它会搜索该事件的订阅者并运行任何订阅的进程。如果您在SQL中直接对帐户记录进行更改,则会剥夺平台为该事件运行进程的机会。

值得注意的是,微软在内部事件中使用了相同的事件框架。所以,如果你说;好吧,我没有自定义插件或工作流运行在帐户的更新消息上,所以我可以直接在SQL中编辑帐户"通过这样做,您仍然有可能破坏触发该事件的Microsoft内部流程。

简而言之,平台需要处理所有事件,这就是不支持直接更新数据库的原因。如果你这样做,微软将拒绝支持你的系统。

另一个考虑因素是,如果你想转移到Dynamics Online,甚至不可能写入数据库,所以你必须重做任何依赖它的自动化。这也是为什么每个人都普遍接受以支持的方式自定义系统的需要的另一个原因。

人们偶尔会做一些没有根据的事情,并有充分的理由吗?是的,也许最常见的是对UI进行不受支持的更改。即便如此,直接写入数据库也是最需要避免的违规行为之一。

回到你的场景。。。发现SQL数据库是禁止任何直接写入或模式更改的,这可能会让人感到不安。幸运的是,Dynamics提供了许多其他自动化";钩子";包括客户端JavaScript、业务规则、Power Automate流、工作流和插件(同步和异步(。

要在UI中设置默认值,选项包括业务规则和JavaScript。要在数据库中设置默认值,同步工作流或插件就可以了。

开发人员指南是一个很好的起点。

这将被视为Microsoft"不支持"的自定义。如果它破坏了应用程序的逻辑,微软不会帮你修复它。如果你转到"在线"而不是"内部部署",你就没有这个能力了。目前的开发人员久经沙场,正在努力帮助您。这是一个非常糟糕的想法——最好是在实体的create上创建一个插件,为null字段设置默认值。通过这种方式,您的逻辑与所有其他自定义逻辑一起在应用程序中,并且受到支持。

相关内容

最新更新