Entity Framework Core: View the model as text

Note: I use the preview version of Entity Framework Core 2.0 (2.0.0-preview2-final). Things may change after the final version is released

In the previous posts, I edited the model to change the names of the generated objects or add properties. Instead of generating the migration script to view what is generated, you can use the ToDebugString extension method to view the content of the model.

using Microsoft.EntityFrameworkCore.Metadata.Internal;

class Program
{
    static void Main()
    {
        using (var context = new BloggingContext())
        {
            Console.WriteLine(context.Model.ToDebugString());
        }
    }
}

This prints the content of the model. You'll find useful data such as the properties, keys, value generation strategies. The number at the end of the lines are the index of the property in the different indexes (source code).

Model:
  EntityType: Blog
    Properties:
      BlogId (int) Required PK ReadOnlyAfterSave ValueGenerated.OnAdd 0 0 0 -1 0
      Url (string) 1 1 -1 -1 -1
    Navigations:
      Posts (<Posts>k__BackingField, List<Post>) Collection ToDependent Post Inverse: Blog 0 -1 1 -1 -1
    Keys:
      BlogId PK
    Annotations:
      Relational:TableName: Blogs
      RelationshipDiscoveryConvention:NavigationCandidates: System.Collections.Immutable.ImmutableSortedDictionary`2[System.Reflection.PropertyInfo,System.Type]
  EntityType: Post
    Properties:
      PostId (int) Required PK ReadOnlyAfterSave ValueGenerated.OnAdd 0 0 0 -1 0
      BlogId (int) Required FK Index 1 1 1 -1 1
      Content (string) MaxLength4000 2 2 -1 -1 -1
        Annotations:
          MaxLength: 4000
      IsDeleted (no field, bool) Shadow Required 3 3 -1 0 -1
        Annotations:
          SqlServer:ColumnName: _IsDeleted
      Title (string) 4 4 -1 -1 -1
    Navigations:
      Blog (<Blog>k__BackingField, Blog) ToPrincipal Blog Inverse: Posts 0 -1 2 -1 -1
    Keys:
      PostId PK
    Foreign keys:
      Post {'BlogId'} -> Blog {'BlogId'} ToDependent: Posts ToPrincipal: Blog
    Annotations:
      Relational:TableName: Posts
      RelationshipDiscoveryConvention:NavigationCandidates: System.Collections.Immutable.ImmutableSortedDictionary`2[System.Reflection.PropertyInfo,System.Type]
Annotations:
  ProductVersion: 2.0.0-preview1-24937
  SqlServer:ValueGenerationStrategy: IdentityColumn

Leave a reply