Toolbelt.EntityFrameworkCore.IndexAttribute 1.0.2.1

Revival of [Index] attribute for EF Core. (with extension for model building.)

[NOTICE] EF Core team said "We didn't bring this over from EF6.x because it had a lot of issues" (https://github.com/aspnet/EntityFrameworkCore/issues/4050)
You should consider well before use this package.

There is a newer version of this package available.
See the version list below for details.
Install-Package Toolbelt.EntityFrameworkCore.IndexAttribute -Version 1.0.2.1
dotnet add package Toolbelt.EntityFrameworkCore.IndexAttribute --version 1.0.2.1
<PackageReference Include="Toolbelt.EntityFrameworkCore.IndexAttribute" Version="1.0.2.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Toolbelt.EntityFrameworkCore.IndexAttribute --version 1.0.2.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Toolbelt.EntityFrameworkCore.IndexAttribute, 1.0.2.1"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// Install Toolbelt.EntityFrameworkCore.IndexAttribute as a Cake Addin
#addin nuget:?package=Toolbelt.EntityFrameworkCore.IndexAttribute&version=1.0.2.1

// Install Toolbelt.EntityFrameworkCore.IndexAttribute as a Cake Tool
#tool nuget:?package=Toolbelt.EntityFrameworkCore.IndexAttribute&version=1.0.2.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

IndexAttribute for EntityFramework Core

Build status NuGet Package

What's this?

Revival of [Index] attribute for EF Core. (with extension for model building.)

Attention

EF Core team said:

"We didn't bring this (= IndexAttribute) over from EF6.x because it had a lot of issues"
(https://github.com/aspnet/EntityFrameworkCore/issues/4050)

Therefore, you should consider well before use this package.

How to use?

  1. Annotate your model with [Index] attribute that lives in Toolbelt.ComponentModel.DataAnnotations.Schema namespace.
using Toolbelt.ComponentModel.DataAnnotations.Schema;

public class Person
{
    public int Id { get; set; }

    [Index] // <- Here!
    public string Name { get; set; }
}
  1. [Important] Override OnModelCreating() method of your DbContext class, and call BuildIndexesFromAnnotations() extension method which lives in Toolbelt.ComponentModel.DataAnnotations namespace.
using Microsoft.EntityFrameworkCore;
using Toolbelt.ComponentModel.DataAnnotations;

public class MyDbContext : DbContext
{
    ...
    // Override "OnModelCreating", ...
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        // .. and invoke "BuildIndexesFromAnnotations"!
        modelBuilder.BuildIndexesFromAnnotations();
    }
}

That's all!

BuildIndexesFromAnnotations() extension method scans the DbContext with .NET Reflection technology, and detects [Index] attributes, then build models related to indexing.

After doing that, the database which created by EF Core, contains indexes that are specified by [Index] attributes.

For More Detail...

This library is designed to have the same syntax as EF 6.x [Index] annotation.

Please visit document site of EF 6.x and [Index] attribute for EF 6.x.

Not Supported Feature

IsClustered property is not supported at this version.

License

MIT License

IndexAttribute for EntityFramework Core

Build status NuGet Package

What's this?

Revival of [Index] attribute for EF Core. (with extension for model building.)

Attention

EF Core team said:

"We didn't bring this (= IndexAttribute) over from EF6.x because it had a lot of issues"
(https://github.com/aspnet/EntityFrameworkCore/issues/4050)

Therefore, you should consider well before use this package.

How to use?

  1. Annotate your model with [Index] attribute that lives in Toolbelt.ComponentModel.DataAnnotations.Schema namespace.
using Toolbelt.ComponentModel.DataAnnotations.Schema;

public class Person
{
    public int Id { get; set; }

    [Index] // <- Here!
    public string Name { get; set; }
}
  1. [Important] Override OnModelCreating() method of your DbContext class, and call BuildIndexesFromAnnotations() extension method which lives in Toolbelt.ComponentModel.DataAnnotations namespace.
using Microsoft.EntityFrameworkCore;
using Toolbelt.ComponentModel.DataAnnotations;

public class MyDbContext : DbContext
{
    ...
    // Override "OnModelCreating", ...
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        // .. and invoke "BuildIndexesFromAnnotations"!
        modelBuilder.BuildIndexesFromAnnotations();
    }
}

That's all!

BuildIndexesFromAnnotations() extension method scans the DbContext with .NET Reflection technology, and detects [Index] attributes, then build models related to indexing.

After doing that, the database which created by EF Core, contains indexes that are specified by [Index] attributes.

For More Detail...

This library is designed to have the same syntax as EF 6.x [Index] annotation.

Please visit document site of EF 6.x and [Index] attribute for EF 6.x.

Not Supported Feature

IsClustered property is not supported at this version.

License

MIT License

Release Notes

v.1.0.2
- Added support for Owned Entity Types.
v.1.0.0
- 1st release.

NuGet packages (9)

Showing the top 5 NuGet packages that depend on Toolbelt.EntityFrameworkCore.IndexAttribute:

Package Downloads
CoreMore
Package Description
Zny.DomainBase
实体基类
Zicard.API.Common
Bases microservices da Zicard API
Toolbelt.EntityFrameworkCore.IndexAttribute.SqlServer
The `[IndexColumn]` attribute that is the revival of `[Index]` attribute for EF Core. (with extension for model building.) This package also provides [PrimaryKey] attribute.
Bnsights.Core
Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
5.0.0 34,450 8/14/2020
3.2.0 50,958 3/18/2020
3.1.0 17,891 2/5/2020
3.0.0 25,777 10/9/2019
2.1.0 14,117 9/1/2019
2.0.2.3-beta 233 8/22/2019
2.0.1 2,565 7/26/2019
2.0.0 32,634 2/21/2019
1.0.2.1 8,978 1/22/2019
1.0.1-beta 344 1/18/2019
1.0.0 58,417 12/28/2017
Show less