It is possible using EntityFrameworkCore v1.0.1 or greater.
The following code gets the desired result:
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
namespace TestApplication.Models
{
/// <summary>
/// The context class. Make your migrations from this point.
/// </summary>
public partial class TestApplicationContext : DbContext
{
public virtual DbSet<Company> Companies { get; set; }
public TestApplicationContext(DbContextOptions<TestApplicationContext> options) : base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// standard stuff here...
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>(entity =>
{
entity.Property<Guid>("CompanyId")
.ValueGeneratedOnAdd();
entity.Property<int>("CompanyIndex")
.UseSqlServerIdentityColumn()
.ValueGeneratedOnAdd();
entity.Property(e => e.CompanyName)
.IsRequired()
.HasColumnType("varchar(100)");
// ... Add props here.
entity.HasKey(e => e.CompanyId)
.ForSqlServerIsClustered(false)
.HasName("PK_Company");
entity.HasIndex(e => e.CompanyIndex)
.ForSqlServerIsClustered(true)
.HasName("IX_Company");
});
}
}
/// <summary>
/// The model - put here for brevity.
/// </summary>
public partial class Company
{
public Company()
{
}
public Guid CompanyId { get; set; }
public int CompanyIndex { get; set; }
public string CompanyName { get; set; }
// more props here.
}
}
Project.json
{
"version": "1.0.0-*",
"dependencies": {
"Microsoft.EntityFrameworkCore.Design": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview3-final",
"NETStandard.Library": "1.6.0"
},
"tools": {
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview3-final",
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},
"frameworks": {
"netstandard1.6": {
"imports": "dnxcore50"
}
}
}
.IsClustered(false)
– Guava