如何将新创建的CRM联系人记录复制到SQL表

时间:2015-02-24 14:36:04

标签: sql plugins dynamics-crm-2011 sync

我写了一个插件,在创建新记录时发布(post)。这个插件简单运行一个SSIS包,将新创建的记录详细信息移动到SQL表中。我不得不将此插件部署为无隔离模式。

我想知道的是,有没有更好的解决方案来实现与SQL表同步CRM记录?

我正在研究CRM 2011 RU 18的前提。

                    string connectionString = "User Id=username; Password=password; Initial Catalog=db; Data Source=myServer;";
                    using (SqlConnection connection = new SqlConnection(connectionString))
                    {
                        SqlCommand cmd = new SqlCommand("INSERT INTO testPerson (Firstname, Lastname, Emailaddress, CrmGuid) VALUES (@FN, @LN, @Email, @CrmGuid)");
                        cmd.CommandType = CommandType.Text;
                        cmd.Connection = connection;

                        cmd.Parameters.AddWithValue("@FN", "James");
                        cmd.Parameters.AddWithValue("@LN", "Bolton");
                        cmd.Parameters.AddWithValue("@Email", "1152@now.com");
                        cmd.Parameters.AddWithValue("@CrmGuid", "C45843ED-45BC-E411-9450-00155D1467C5");

                        connection.Open();
                        cmd.ExecuteNonQuery();
                    }

                    //////// Direct DB Connection ////////////     <--- END 1
                }

                catch (Exception ex)
                {
                    tracingService.Trace("CRM to mWeb Sync Plugin: {0}", ex.ToString());
                    throw;
                }

3 个答案:

答案 0 :(得分:0)

作为一种可能的替代方案,我看到该插件可以使用ADO Connection / Command e.t.c.将数据直接推送到外部数据库。

答案 1 :(得分:0)

如果要在沙箱模式下运行此功能,您将无法直接定位SQL(或运行SSIS包)。

正确的解决方案是定位网络服务。

创建一个标准的.NET Web服务(WebApi,ASP.NET旧学校,WCF等 - 选择你的毒药),你可以发布字段。该Web服务应该将字段写入SQL。这是基本的.NET - 您可以使用SqlCommand,EntityFramework等。将此Web服务部署到IIS,就像使用任何Web服务一样。

您可以在此处获得有关创建ASP.NET WebApi Web服务的完整教程:http://www.codeproject.com/Articles/659131/Understanding-and-Implementing-ASPNET-WebAPI

现在,您的插件应使用HttpClient调用您创建的Web服务。只要你有一个FQDN(即service.mydomain.com而不是诸如localhost或34.22.643.23之类的东西),你就可以在沙盒模式下运行你的插件(即,不是隔离。)

您可以使用任何IIS安全功能保护您的服务,或在您的WebAPI代码中实施授权。

答案 2 :(得分:0)

根据@Nicknow,我终于学会了(足够)并创建了我的第一个WCF服务并将其部署在IIS上。是的,它有点工作和学习,但它完美无缺。从记录创建到插件完成到在我的后端数据库中创建的新行,所有这些都在2分钟内完成。

如果和我在同一条船上的其他人,我会建议购买This book,因为这对我来说是巨大的帮助。

再次感谢你们指点我正确的方向。