D365Extensions 1.0.16

There is a newer version of this package available.
See the version list below for details.
dotnet add package D365Extensions --version 1.0.16
NuGet\Install-Package D365Extensions -Version 1.0.16
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="D365Extensions" Version="1.0.16" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add D365Extensions --version 1.0.16
#r "nuget: D365Extensions, 1.0.16"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install D365Extensions as a Cake Addin
#addin nuget:?package=D365Extensions&version=1.0.16

// Install D365Extensions as a Cake Tool
#tool nuget:?package=D365Extensions&version=1.0.16

NuGet version (D365Extensions) Build status

D365Extensions

A collection of Extension methods for Microsoft Dynamics CRM/D365 SDK base classes

Setup

All extension methods are declared in the same namespace as related SDK types. No additional using statements required.

Usage

This assembly is assumed to be used for plugin development. As D365 for CE currently doesn't support assembly dependencies you have to merge it in your primary plugin assembly. We recommend using this tool:

ILRepack.Lib.MSBuild.Task

ILRepack use the same technique as ILMerge but it is build on newer versions of Mono instruments so it is more fast and efficient. Please refer to link above for documentation.

After edit you .cproj file should be looking like the folowing:

  <Target Name="AfterBuild">
    <ItemGroup>
      <InputAssemblies Include="$(OutputPath)\$(AssemblyName).dll" />
      <InputAssemblies Include="$(OutputPath)\D365Extensions.dll" />
    </ItemGroup>
    <ILRepack Parallel="true" 
              InputAssemblies="@(InputAssemblies)"
              LibraryPath="$(OutputPath)" 
              KeyFile="$(AssemblyOriginatorKeyFile)" 
              OutputFile="$(OutputPath)\$(AssemblyName).dll" />
  </Target>

You should use KeyFile parameter as your plugin assembly should be signed. We also recommend use LibraryPath parameter as shown to avoid merge problems with dependent SDK assemblies.

!!! Never merge SDK assemblies in your code. It will cause runtime errors !!!

Extensions

Entity Extensions

Set of extension methods for Microsoft.Xrm.Sdk.Entity base class.

GetFormatedValue

Simplifies getting values from Entity.FormattedValues collection

public String GetFormatedValue(String attributeLogicalName);

GetAliasedValue

Simplifies getting values from linked entities attributes wraped in AliasedValue class. This kind of attributes can be queried by FetchExpression or QueryExpression using Linked Entities

public T GetAliasedValue<T>(String attributeLogicalName, String alias);

GetAliasedEntity

Simplifies getting multiple linked entitiy attrubutes by allocating them to separate Entity

public Entity GetAliasedEntity(String entityLogicalName, String alias = null);

GetAliasedEntity<T>

Generic version of GetAliasedEntity

public T GetAliasedEntity<T>(String entityLogicalName, String alias = null) where T : Entity;

MergeAttributes

Add attributes form source Entity if they don't exist in target Entity. Very convenient way to compose attribute values from plugin Target and PreImage to operate single Entity instance.

public void MergeAttributes(Entity source);

IOrganizationService Extensions

Set of extension methods for IOrganizationService base class. Basically these are simple overrides of existing methods which take EntityReference or Entity instead of separate Id and LogicalName parameters.

Associate & Disassociate

Associate & Disassociate methods override. Take EntityReference (insted of separate Id + LogicalName) input parameter

public void Associate(EntityReference primaryEntity, Relationship relationship, EntityReferenceCollection relatedEntities);
public void Associate(EntityReference primaryEntity, Relationship relationship, IList<EntityReference> relatedEntities);

public void Disassociate(EntityReference primaryEntity, Relationship relationship, EntityReferenceCollection relatedEntities);
public void Disassociate(EntityReference primaryEntity, Relationship relationship, IList<EntityReference> relatedEntities)

Delete

Delete method override. Take EntityReference (insted of separate Id + LogicalName) input parameter

public void Delete(EntityReference reference);
public void Delete(Entity entity);

Retrieve

Retrieve method override. Take EntityReference (insted of separate Id + LogicalName) input parameter

public Entity Retrieve(EntityReference reference, ColumnSet columnSet);
public Entity Retrieve(EntityReference reference, params String[] columns);

Retrieve<T>

Generic version of Retrieve

public T Retrieve<T>(EntityReference reference, ColumnSet columnSet) where T : Entity;
public T Retrieve<T>(EntityReference reference, params String[] columns) where T : Entity;
Product Compatible and additional computed target framework versions.
.NET Framework net452 is compatible.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.1.0 265 5/30/2023
2.0.0 143 5/1/2023
1.5.3 1,532 12/2/2022
1.4.1 8,786 4/15/2022
1.4.0 463 2/7/2022
1.3.0 370 10/15/2021
1.2.1 937 8/19/2020
1.2.0 520 7/19/2020
1.1.0 11,669 8/30/2019
1.0.43 670 7/9/2019
1.0.42 646 6/28/2019
1.0.38 688 6/3/2019
1.0.37 638 5/27/2019
1.0.36 715 4/22/2019
1.0.35 652 4/15/2019
1.0.32 649 3/21/2019
1.0.31 645 3/11/2019
1.0.30 639 3/10/2019
1.0.28 747 2/4/2019
1.0.22 710 1/31/2019
1.0.21 779 12/19/2018
1.0.17 711 12/19/2018
1.0.16 843 10/5/2018
1.0.15 811 10/2/2018
1.0.8 834 10/1/2018
1.0.6 808 9/30/2018