Creating Records

Basic Create

Pass a model instance to CreateAsync. The layout is determined by the [DataContract(Name = "...")] attribute:

var invoice = new Invoice
{
    InvoiceNumber = "INV-001",
    Amount = 150.00m,
    Status = "Open"
};

var response = await client.CreateAsync(invoice);

Layout Override

Specify a layout explicitly:

var response = await client.CreateAsync("AlternateLayout", invoice);

Null and Default Value Control

By default, properties with null or default values are excluded from the request. To include them:

var response = await client.CreateAsync(invoice,
    includeNullValues: true,
    includeDefaultValues: true);

Create with Scripts

Run FileMaker scripts as part of the create operation. Scripts execute in this order: pre-request, pre-sort, then post-request (after the record is created).

var response = await client.CreateAsync(invoice,
    script: "AfterCreate", scriptParameter: "param1",
    preRequestScript: "BeforeCreate", preRequestScriptParam: "param2",
    preSortScript: "SortSetup", preSortScriptParameter: "param3");

Reading Script Results

The ICreateResponse contains an ActionResponse with script results:

var response = await client.CreateAsync(invoice,
    script: "AfterCreate", scriptParameter: "param");

var scriptResult = response.Response.ScriptResult;
var scriptError = response.Response.ScriptError;  // 0 = no error

var preReqResult = response.Response.ScriptResultPreRequest;
var preSortResult = response.Response.ScriptResultPreSort;

Advanced: SendAsync with ICreateRequest

For full control, build a request manually:

var req = client.GenerateCreateRequest(invoice);
req.Layout = "Invoices";
req.Script = "AfterCreate";
req.ScriptParameter = "param";

var response = await client.SendAsync(req);

This site uses Just the Docs, a documentation theme for Jekyll.