小编Mat*_*att的帖子

Microsoft Dynamics(Navision)与C#.NET

我是一名经验丰富的C#/ .NET开发人员,最近有机会成为Microsoft Dynamics(Navision)开发人员(培训,认证等都将由雇主支付).我从未参与任何与此动态有关的事情,所以我想问一下与C#/ .NET开发人员相比,成为Dynamics开发人员的感觉.在做出决定之前,我已经编制了一些我有兴趣知道的事情清单.请随时编辑列表.

C#/ .NET

  1. IDE:Visual Studio
  2. 语言:C#
  3. 应用程序域:基于Web或基于桌面
  4. 业务领域:任何行业
  5. 良好的职业发展和易于改变的工作
  6. 等等...

Microsoft Dynamics

  1. 相对封闭的市场(与.NET相比)
  2. 没有那么多的工作
  3. 与Visual Studio相比,IDE(或开发环境)非常糟糕,我甚至可能更喜欢在记事本中工作
  4. 与定制构建的应用程序相比,Dynamics客户可以获得哪些好处?

谢谢!

.net c# erp navision dynamics-nav

23
推荐指数
3
解决办法
2万
查看次数

SQL Server上的(nolock)和表别名的顺序

所以我有一个SQL语句,削减看起来像这样:

SELECT column
FROM table t (nolock)
LEFT OUTER JOIN table2 (nolock) t2 on t.id = t2.id
Run Code Online (Sandbox Code Playgroud)

此语句适用于我的SQL 2005和SQL 2008环境.它不在远程SQL 2005环境中.我已将最后一行切换为:

LEFT OUTER JOIN table2 t2 (nolock) on t.id = t2.id
Run Code Online (Sandbox Code Playgroud)

这适用于远程环境.

撇开(nolock)是否合适以及语法应该保持内部一致的问题,为什么会出现这种情况的任何想法?我试图搜索处理此问题的修补程序/知识库,但没有提出任何问题.SQL服务器上是否存在可能导致此行为的设置?

sql sql-server sql-server-2005

16
推荐指数
1
解决办法
2万
查看次数

LINQ to Dynamics CRM查询本地过滤记录

我使用CRM 2011 RC(v5)LINQ-to-CRM提供程序编写了一个Linq to CRM查询.我有一个本地声明的List <T>,我想加入CRM实体,我希望查询在CRM服务器上执行.一个例子可能有帮助:

MyObject myObject = new MyObject();
List<myAccount> myAccountsList = new List<myAccount>();

myAccountsList.Add(new myAccount() {AccountNumber = "123"};
myAccountsList.Add(new myAccount() {AccountNumber = "456"};

myObject.ListOfAccounts = myAccountsList;

var accountsQuery = from ax in myObject.ListOfAccounts
                    join a in orgContext.CreateQuery<customAccountEntity>() on ax.AccountNumber equals a.account_number
                    select a;

foreach(var item in accountsQuery)
{
    Console.WriteLine("Id of record retrieved: " + a.Id.ToString());
}
Run Code Online (Sandbox Code Playgroud)

上面的代码编译并执行,但是,在检索整个CRM实体记录集之后,本地执行记录的过滤.显然,当CRM实体包含数千行时,查询将执行不佳甚至超时.

我已阅读有关IQueryable和IEnumerable的内容,并尝试使用AsQueryable()扩展方法转换List,该方法无效.我需要上面的Linq查询来运行SQL,如下所示:

SELECT a.*
FROM customAccountEntity AS a
WHERE a.account_number IN ('123', '456');
Run Code Online (Sandbox Code Playgroud)

如果想要加入多个字段,可以使用临时表.我怎么能做到这一点?

c# linq dynamics-crm dynamics-crm-2011

12
推荐指数
1
解决办法
4956
查看次数

从Ribbon JScript CRM Online 2011调用C#代码

我需要在实体上单击功能区按钮执行一些代码,该实体可以从CRM Online 2011更新一些相关数据.我宁愿不必在JScript中编写所有这些逻辑.有没有办法从JScript调用C#代码?我查看了Microsoft在功能区中使用的JScript文件,它看起来像这样:

Mscrm.Campaign.copyCampaign = function (campaignId, saveAsTemplate) {
    var $v_0 = new RemoteCommand("MarketingAutomation", "CopyCampaign", null);
    $v_0.SetParameter("campaignId", campaignId);
    $v_0.SetParameter("saveAsTemplate", saveAsTemplate.toString());
    var $v_1 = $v_0.Execute(),
        $v_2 = $v_1.ReturnValue;
    openObj(Mscrm.EntityTypeCode.Campaign, $v_2, null, null, Mscrm.NavigationMode.NavigationModeInline, null);
    Mscrm.Utilities.refreshParentGrid(Mscrm.EntityTypeCode.Campaign, campaignId)
};
Run Code Online (Sandbox Code Playgroud)

我看到正在放置一个RemoteCommand调用,我假设它正在回到一些Web服务功能.我希望能做到这样的事情.我可以添加自己的Web服务功能吗?

我能够从JScript调用为实体发送"分配"消息,就像测试一样.这可能适用于插件,但为执行事件发送消息似乎很奇怪,实际上并不只是为了运行一些C#代码("分配","更新"等)而且我不喜欢看到创建自己的消息的方法.

javascript c# dynamics-crm dynamics-crm-2011 dynamics-crm-online

9
推荐指数
1
解决办法
6703
查看次数

MS Dynamics CRM - 数据库GUID

我正在使用SDK for CRM,并在我们的一个实体的一堆实例上打印出PK.我用数据库的过滤视图重复了它,得到了相同的答案:

    1a6c691d-391a-de11-8b0e-0050568407cb
    bd7b0ff0-391a-de11-8b0e-0050568407cb
    ed272bfe-391a-de11-8b0e-0050568407cb
    ... and so on ...

这些似乎不是有效的GUID.首先,他们看错了 - 它们几乎完全相同,这是自从旧版本1和2 GUID基于MAC地址和时钟时间以来GUID没有的属性.而且,事实上GUID中的某个半字节表示GUID的版本 - 这里的半字节不正确.(第三部分的第一个半字节,即:1a6c691d-391a - **d**e11-8b0e-0050568407cb) - 有效值为1-5)(使用MS的GUID生成器生成GUID - 该插槽始终为4.(至少对于我的版本.))

这些GUID,还是ID,我怎么知道?

guid dynamics-crm

8
推荐指数
1
解决办法
4078
查看次数

TSQL从动态SQL写入临时表

请考虑以下代码:

SET @SQL1 = 'SELECT * INTO #temp WHERE ...'
exec(@SQL1)
SELECT * from #temp  (this line throws an error that #temp doesn't exist)
Run Code Online (Sandbox Code Playgroud)

显然这是因为exec命令会旋转一个单独的会话,而#temp是该会话的本地会话.我可以使用全局临时表## temp,但是我必须提出一个命名方案来避免冲突.你们都推荐什么?

t-sql sql-server session temp-tables

7
推荐指数
3
解决办法
3万
查看次数

你如何处理fetchxml结果数据?

我已经避免使用fetchxml,因为我一直不确定在调用crmService.Fetch(fetchXml)之后处理结果数据的最佳方法.在几种情况下,我使用带有LINQ的XDocument从此数据结构中检索数据,例如:

XDocument resultset = XDocument.Parse(_service.Fetch(fetchXml));
if (resultset.Root == null || !resultset.Root.Elements("result").Any())
{
    return;
}
foreach (var displayItem in resultset.Root.Elements("result").Select(item => item.Element(displayAttributeName)).Distinct())
{
    if (displayItem!= null && displayItem.Value != null)
    {
        dropDownList.Items.Add(displayItem.Value);    
    }
}
Run Code Online (Sandbox Code Playgroud)

处理fetchxml结果数据的最佳方法是什么,以便可以轻松使用.诸如将这些记录传递到ASP.NET数据网格之类的应用程序将非常有用.

xml data-manipulation dynamics-crm fetchxml data-structures

7
推荐指数
2
解决办法
9161
查看次数

相当于SQL IN子句

我有一个名为new_trexmail的实体,其中包含一个名为new_contextline的字符串属性.

我正在尝试获取一个实体列表,其中new_contextlineis在定义的列表中.

以下代码失败并显示错误: NotSupportedException: Invalid 'where' condition. An entity member is invoking an invalid property or method.

string[] test = new[]{"aaa", "hhh"};

var query = from n in New_trexmailSet
            where test.Contains(n.New_contextline)
            select n;
Run Code Online (Sandbox Code Playgroud)

我理解为什么会抛出这个错误,但我想知道是否可以使用XRM进行IN子句的等效.

如果可能的话,我该如何让XRM执行SELECT * FROM new_trexmail WHERE new_contextline in ('aaa', 'hhh')

谢谢,

大卫

linq microsoft-dynamics crm dynamics-crm dynamics-crm-2011

7
推荐指数
1
解决办法
2477
查看次数

在Dynamics CRM 4.0中自定义搜索

我有两个相关的问题.

第一:我希望对Dynamics CRM 4.0中的自定义实体进行全文搜索.有没有人以前做过这个或知道怎么做?

我知道我可以使用Web服务和sdk构建QueryExpressions但是我可以使用此方法使用布尔类型语法进行全文搜索吗?据我所知,这不会成功.

第二:有没有其他人对Dynamics CRM 4.0提供的搜索功能感到受限?我知道有一些第三部分的搜索产品,但我还没找到我喜欢的产品.任何建议,将不胜感激.

dynamics-crm dynamics-crm-4

6
推荐指数
1
解决办法
4909
查看次数

Dynamics CRM 2011 Online,CrmSvcUtil,代理服务器身份验证失败

尝试为Dynamics CRM 2011 Online 编写插件.

第一步是使用CrmSvcUtil为实体类生成代码.

我想我有正确的CrmSvcUtil参数(见下文)但是当我运行它时我得到:

退出程序例外:元数据包含无法解析的引用:' https : //myorg.crm.dynamics.com/XRMServices/2011/Organization.svc?wsdl '.启用跟踪并查看跟踪文件以获取更多信息.

启用跟踪(通过CrmSvcUtil.exe.config)会显示以下错误:

---> System.Net.WebException:远程服务器返回错误:(407)需要代理验证. 在System.ServiceModel.Description.MetadataExchangeClient的
System.Net.HttpWebRequest.GetResponse()
处.MetadataLocationRetriever.DownloadMetadata(TimeoutHelper timeoutHelper)
等...

这是有道理的,因为我所在的网络有一个代理服务器,需要我的网络用户名/密码才能上网.当然,这个用户名/密码与Dynamics CRM不同.

那么,我如何让CrmSvcUtil将正确的用户名/密码传递给代理?

这是我与CrmSvcUtil一起使用的配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="url" value="https://myorg.crm.dynamics.com/XRMServices/2011/Organization.svc"/>
    <add key="codeCustomization" value="Microsoft.Xrm.Client.CodeGeneration.CodeCustomization, Microsoft.Xrm.Client.CodeGeneration"/>
    <add key="out" value="XRM\Xrm.cs"/>
    <add key="namespace" value="Xrm"/>
    <add key="username" value="myusername@fordynamics.com"/>
    <add key="password" value="mydynamicspassword"/>
    <add key="deviceid" value="my device ID"/>
    <add key="devicepassword" value="my device password"/>
    <add key="servicecontextname" value="XrmServiceContext" />
    <add key="servicecontextprefix" value="Xrm" />
  </appSettings>

  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="configConsoleListener"
        type="System.Diagnostics.ConsoleTraceListener">
          <filter type="System.Diagnostics.EventTypeFilter" …
Run Code Online (Sandbox Code Playgroud)

c# dynamics-crm dynamics-crm-2011

6
推荐指数
1
解决办法
4384
查看次数