Commit 11ec77ea authored by Mark Bell's avatar Mark Bell

Update README with documentation for [ExplicitKey] attribute

parent 23e6b64c
...@@ -21,15 +21,21 @@ bool DeleteAll<T>(); ...@@ -21,15 +21,21 @@ bool DeleteAll<T>();
``` ```
For these extensions to work, the entity in question _MUST_ have a For these extensions to work, the entity in question _MUST_ have a
key-property, a property named "`id`" or decorated with a `[Key]` attribute. key property. Dapper will automatically use a property named "`id`"
(case-insensitive) as the key property, if one is present.
```csharp ```csharp
public class Car public class Car
{ {
public int Id { get; set; } public int Id { get; set; } // Works by convention
public string Name { get; set; } public string Name { get; set; }
} }
```
If the entity doesn't follow this convention, decorate
a specific property with a `[Key]` or `[ExplicitKey]` attribute.
```csharp
public class User public class User
{ {
[Key] [Key]
...@@ -39,6 +45,9 @@ public class User ...@@ -39,6 +45,9 @@ public class User
} }
``` ```
`[Key]` should be used for database-generated keys (e.g. autoincrement columns),
while `[ExplicitKey]` should be used for explicit keys generated in code.
`Get` methods `Get` methods
------- -------
...@@ -119,7 +128,27 @@ Dapper.Contrib makes use of some optional attributes: ...@@ -119,7 +128,27 @@ Dapper.Contrib makes use of some optional attributes:
public string Name { get; set; } public string Name { get; set; }
} }
``` ```
* `[Key]` - this property is the identity/key (unless it is named "Id") * `[Key]` - this property represents a database-generated identity/key
```csharp
public class Employee
{
[Key]
public int EmployeeId { get; set; }
public string Name { get; set; }
}
```
* `[ExplicitKey]` - this property represents an explicit identity/key which is
*not* automatically generated by the database
```csharp
public class Employee
{
[ExplicitKey]
public Guid EmployeeId { get; set; }
public string Name { get; set; }
}
```
* `[Write(true/false)]` - this property is (not) writeable * `[Write(true/false)]` - this property is (not) writeable
* `[Computed]` - this property is computed and should not be part of updates * `[Computed]` - this property is computed and should not be part of updates
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment