# Create

Jump to the [Code block](#code-block) for a combined complete example.

## Setup

The following examples will use the setup and record structure below to illustrate single record creation in an Aerospike database.

```csharp
using Aerospike.Client;

using System;

using System.Collections;

// Define host configuration

Host config = new Host("127.0.0.1", 3000);

// Establishes a connection to the server

AerospikeClient client = new AerospikeClient(null, config);
```

The record structure:

```asciidoc
Occurred: Integer

Reported: Integer

Posted: Integer

Report: Map

{

    shape: List,

    summary: String,

    city: String,

    state: String,

    duration: String

}

Location: GeoJSON
```

## Policies

Write policies define additional semantics for the write operation. Instead of using the default write [policies](https://aerospike.com/docs/database/learn/policies), we can set them on a per command basis.

The following example creates a new write policy container object that sets the send key policy to `true`. This stores the user defined key with the record, and returns it with read commands.

```csharp
// Create new write policy

WritePolicy writePolicy = new WritePolicy();

writePolicy.sendKey = true;
```

## Key

The [key](https://aerospike.com/docs/database/learn/architecture/data-storage/data-model#keys-and-digests) is a tuple made up of: `([namespace](https://aerospike.com/docs/database/learn/architecture/data-storage/data-model#namespaces), [set](https://aerospike.com/docs/database/learn/architecture/data-storage/data-model#sets), user defined key)`.

The following example creates a key using the `sandbox` namespace, `ufodata` set, and user defined key `5001`.

```csharp
// Create the record key

Key key = new Key("sandbox", "ufodata", 5001);
```

## Create a record

A [record](https://aerospike.com/docs/database/learn/architecture/data-storage/data-model#records) is the basic unit of storage in the database. A record is composed of: `([key](https://aerospike.com/docs/database/learn/architecture/data-storage/data-model#keys-and-digests), [metadata](https://aerospike.com/docs/database/learn/architecture/data-storage/data-model#metadata), [bins](https://aerospike.com/docs/database/learn/architecture/data-storage/data-model#bins-and-data-types))`.

### Setup

Expand the block below to see the creation of the variables used in the [write](#write) example below.

View the data creation

```csharp
// Create a list of shapes to add to the report map

List<string> shape = new List<string>();

shape.Add("circle");

shape.Add("flash");

shape.Add("disc");

// Create the report map

Dictionary<string, object> reportMap = new Dictionary<string, object>();

reportMap.Add("city", "Ann Arbor");

reportMap.Add("state", "Michigan");

reportMap.Add("shape", shape);

reportMap.Add("duration", "5 minutes");

reportMap.Add("summary", "Large flying disc flashed in the sky above the student union. Craziest thing I've ever seen!");

// Format coordinates as a GeoJSON string

String geoLoc = "{\"type\":\"Point\", \"coordinates\":[42.2808,83.7430]}";
```

### Write

The following example shows the creation of the bins and the writing of the record to the database.

```csharp
// Create the bins as Bin("binName", value)

Bin occurred = new Bin("occurred", 20220531);

Bin reported = new Bin("reported", 20220601);

Bin posted = new Bin("posted", 20220601);

// reportMap defined in the section above

Bin report = new Bin("report", reportMap);

// geoLoc defined in the section above

Bin location = new Bin("location", Value.GetAsGeoJSON(geoLoc));

// Write the record to Aerospike

client.Put(writePolicy, key, occurred, reported, posted, report, location);

// Close the connection to the server

client.Close();
```

## Code block

Expand this section for a single code block to create a record

```csharp
using Aerospike.Client;

using System;

using System.Collections;

// Define host configuration

Host config = new Host("127.0.0.1", 3000);

// Establishes a connection to the server

AerospikeClient client = new AerospikeClient(null, config);

// Create new write policy

WritePolicy writePolicy = new WritePolicy();

writePolicy.sendKey = true;

// Create the record key

Key key = new Key("sandbox", "ufodata", 5001);

// Create a list of shapes to add to the report map

List<string> shape = new List<string>();

shape.Add("circle");

shape.Add("flash");

shape.Add("disc");

// Create the report map

Dictionary<string, object> reportMap = new Dictionary<string, object>();

reportMap.Add("city", "Ann Arbor");

reportMap.Add("state", "Michigan");

reportMap.Add("shape", shape);

reportMap.Add("duration", "5 minutes");

reportMap.Add("summary", "Large flying disc flashed in the sky above the student union. Craziest thing I've ever seen!");

// Format coordinates as a GeoJSON string

String geoLoc = "{\"type\":\"Point\", \"coordinates\":[42.2808,83.7430]}";

// Create the bins as Bin("binName", value)

Bin occurred = new Bin("occurred", 20220531);

Bin reported = new Bin("reported", 20220601);

Bin posted = new Bin("posted", 20220601);

// reportMap defined in the section above

Bin report = new Bin("report", reportMap);

// geoLoc defined in the section above

Bin location = new Bin("location", Value.GetAsGeoJSON(geoLoc));

// Write the record to Aerospike

client.Put(writePolicy, key, occurred, reported, posted, report, location);

// Close the connection to the server

client.Close();
```