Creating Resources
Add resources to the FGA hierarchy.
CreateResource is a convenience extension on ISqlOSFgaDbContext that creates an SqlOSFgaResource and adds it to the change tracker.
Usage
// Auto-generated ID
var resourceId = context.CreateResource(
parentId: "retail_root",
name: "Walmart",
resourceTypeId: "chain"
);
// Custom ID
var orgResourceId = context.CreateResource(
parentId: "root",
name: "Acme Corp",
resourceTypeId: "organization",
id: $"org::{org.Id}"
);
Method signature
public static string CreateResource(
this ISqlOSFgaDbContext context,
string parentId,
string name,
string resourceTypeId,
string? id = null);
| Parameter | Description |
|---|---|
parentId | Parent resource ID in the hierarchy |
name | Display name |
resourceTypeId | Resource type (e.g., chain, location) |
id | Optional. If null, a GUID is generated |
Returns the resource ID (generated or custom).
Transaction behavior
CreateResource adds the resource to the EF Core change tracker but does not call SaveChangesAsync. Save it alongside your domain entity in one transaction:
var resourceId = context.CreateResource("retail_root", request.Name, "chain");
var chain = new Chain { ResourceId = resourceId, Name = request.Name };
context.Chains.Add(chain);
await context.SaveChangesAsync(); // saves both the resource and the chain