Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Classes can inherit from FuseIT.S4D.DynamicsConnector.Entities.EntityBase to define strongly-typed entity objects.

Code Block
languagec#
using FuseIT.S4D.DynamicsConnector.Metadata;
// The Entity attribute defines the Dynamics 365 entity name.
[Entity("contact")]
class Contact : EntityBase<Contact>
{
  // Makes the emailaddress1 field available as an object property, with a type.
  public string email
  {
    get => (string)this["emailaddress1"];
    set { this["emailaddress1"] = value; }
  }
  public string firstname
  {
    get => (string)this["firstname"];
    set { this["firstname"] = value; }
  }
  public string lastname
  {
    get => (string)this["lastname"];
    set { this["lastname"] = value; }
  }
  // Any fields not explicitly defined are still accessible via the Dictionary syntax.
  // e.g. this["contactid"]
}

This also allows use of alternate query expression syntax.

Code Block
languagec#
var session = serviceFactory.GetSessionFromConnectionString("MyDynamicsInstance");
// Find a contact by email address.
var contact = await Contact.LoadSingleAsync(session,
  (query, exp) =>
  {
    query.Filter(exp.email == "example@example.com").Select(exp.firstname, exp.lastname);
  }
);
// Returned objects have strongly-type fields where defined.
Console.WriteLine($"First name: {contact.firstname}, Last name: {contact.lastname}");