我写了一个插件,在创建新记录时发布(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;
}
答案 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,因为这对我来说是巨大的帮助。
再次感谢你们指点我正确的方向。