Skip to content

Commit

Permalink
Add documentation for property bag entity types.
Browse files Browse the repository at this point in the history
Part of #2720
  • Loading branch information
AndriySvyryd committed Oct 10, 2020
1 parent 310b0f6 commit 43d0cd4
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 5 deletions.
17 changes: 13 additions & 4 deletions entity-framework/core/modeling/shadow-properties.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
---
title: Shadow Properties - EF Core
description: Configuring shadow properties in an Entity Framework Core model
title: Shadow and Indexer Properties - EF Core
description: Configuring shadow and indexer properties in an Entity Framework Core model
author: AndriySvyryd
ms.date: 01/03/2020
ms.date: 10/09/2020
uid: core/modeling/shadow-properties
---
# Shadow Properties
# Shadow and Indexer Properties

Shadow properties are properties that are not defined in your .NET entity class but are defined for that entity type in the EF Core model. The value and state of these properties is maintained purely in the Change Tracker. Shadow properties are useful when there is data in the database that should not be exposed on the mapped entity types.

Expand Down Expand Up @@ -43,3 +43,12 @@ var blogs = context.Blogs
```

Shadow properties cannot be accessed after a no-tracking query since the entities returned are not tracked by the change tracker.

## Property bag entity types

> [!NOTE]
> Support for Property bag entity types was added in EF Core 5.0.
Entity types that contain only indexer properties are known as property bag entity types. These entity types don't have shadow properties. Currently only `Dictionary<string, object>` is supported as a property bag entity type. This means that it must be configured as a shared entity type with a unique name and the corresponding `DbSet` property must be implemented using a `Set` call.

[!code-csharp[Main](../../../samples/core/Modeling/FluentAPI/SharedType.cs?name=SharedType&highlight=3,7)]
2 changes: 1 addition & 1 deletion entity-framework/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@
href: core/modeling/generated-properties.md
- name: Concurrency tokens
href: core/modeling/concurrency.md
- name: Shadow properties
- name: Shadow and indexer properties
href: core/modeling/shadow-properties.md
- name: Relationships
href: core/modeling/relationships.md
Expand Down
23 changes: 23 additions & 0 deletions samples/core/Modeling/FluentAPI/SharedType.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;

namespace EFModeling.FluentAPI.SharedType
{
#region SharedType
class MyContext : DbContext
{
public DbSet<Dictionary<string, object>> Blogs => Set<Dictionary<string, object>>("Blog");

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.SharedTypeEntity<Dictionary<string, object>>("Blog", bb =>
{
bb.Property<int>("BlogId");
bb.Property<string>("Url");
bb.Property<DateTime>("LastUpdated");
});
}
}
#endregion
}

0 comments on commit 43d0cd4

Please sign in to comment.