Skip to content

Latest commit

 

History

History
90 lines (66 loc) · 2.74 KB

README.md

File metadata and controls

90 lines (66 loc) · 2.74 KB

EntityFrameworkCore.SqlServer.HierarchyId

build status latest version downloads license

Adds hierarchyid support to the SQL Server EF Core provider.

⚠️ Moved to EF Core

This project has been merged into dotnet/efcore. All future bug fixes, enhancements, and releases will be done as part of the main EF Core project.

Installation

The latest stable version is available on NuGet.

dotnet add package EntityFrameworkCore.SqlServer.HierarchyId

Compatibility

The following table show which version of this library to use with which version of EF Core.

EF Core Version to use
7.0 4.x
6.0 3.x
3.1 1.x

Usage

Enable hierarchyid support by calling UseHierarchyId inside UseSqlServer. UseSqlServer is is typically called inside Startup.ConfigureServices or OnConfiguring of your DbContext type.

options.UseSqlServer(
    connectionString,
    x => x.UseHierarchyId());

Add HierarchyId properties to your entity types.

class Patriarch
{
    public HierarchyId Id { get; set; }
    public string Name { get; set; }
}

Insert data.

dbContext.AddRange(
    new Patriarch { Id = HierarchyId.GetRoot(), Name = "Abraham" },
    new Patriarch { Id = HierarchyId.Parse("/1/"), Name = "Isaac" },
    new Patriarch { Id = HierarchyId.Parse("/1/1/"), Name = "Jacob" });
dbContext.SaveChanges();

Query.

var thirdGeneration = from p in dbContext.Patriarchs
                      where p.Id.GetLevel() == 2
                      select p;

Testing

A package for the In-Memory EF Core provider is also available to enable unit testing components that consume HierarchyId data.

dotnet add package EntityFrameworkCore.InMemory.HierarchyId
options.UseInMemoryDatabase(
    databaseName,
    x => x.UseHierarchyId());

See also