Thanks, that was exactly it.
I haven't tried adding the Entity Framework to my core project yet so was confused at the time in the early hours of the morning :D .
Following your advice by not referencing the EF in the Core project and adding the indexes using OnModelCreating in my DBContext class as follows.
modelBuilder.Entity<Person>().Property(e => e.OrganizationUnitId)
.HasColumnAnnotation(
IndexAnnotation.AnnotationName,
new IndexAnnotation(new IndexAttribute("IX_ShareSource_OUId_NationalId") { IsUnique = true, Order = 1})
);
modelBuilder.Entity<Person>().Property(e => e.NationalId)
.HasColumnAnnotation(
IndexAnnotation.AnnotationName,
new IndexAnnotation(new IndexAttribute("IX_ShareSource_OUId_NationalId") { IsUnique = true, Order =2 })
);
I then add a migration which is where something funny is happening. The new migration has entries for allot of other tables.
public partial class Create_Indexes_For_Person_Table : DbMigration
{
public override void Up()
{
DropIndex("dbo.AbpBackgroundJobs", new[] { "IsAbandoned", "NextTryTime" });
DropIndex("dbo.AbpNotificationSubscriptions", new[] { "NotificationName", "EntityTypeName", "EntityId", "UserId" });
DropIndex("dbo.SPMShareSources", new[] { "OrganizationUnitId" });
DropIndex("dbo.AbpUserLoginAttempts", new[] { "UserId", "TenantId" });
DropIndex("dbo.AbpUserLoginAttempts", new[] { "TenancyName", "UserNameOrEmailAddress", "Result" });
DropIndex("dbo.AbpUserNotifications", new[] { "UserId", "State", "CreationTime" });
AlterTableAnnotations(
"dbo.AbpAuditLogs",
c => new
{
Id = c.Long(nullable: false, identity: true),
TenantId = c.Int(),
UserId = c.Long(),
ServiceName = c.String(maxLength: 256),
MethodName = c.String(maxLength: 256),
Parameters = c.String(maxLength: 1024),
ExecutionTime = c.DateTime(nullable: false),
ExecutionDuration = c.Int(nullable: false),
ClientIpAddress = c.String(maxLength: 64),
ClientName = c.String(maxLength: 128),
BrowserInfo = c.String(maxLength: 256),
Exception = c.String(maxLength: 2000),
ImpersonatorUserId = c.Long(),
ImpersonatorTenantId = c.Int(),
CustomData = c.String(maxLength: 2000),
},
annotations: new Dictionary<string, AnnotationValues>
{
{
"DynamicFilter_AuditLog_MayHaveTenant",
new AnnotationValues(oldValue: "EntityFramework.DynamicFilters.DynamicFilterDefinition", newValue: null)
},
});
AlterTableAnnotations(
"dbo.AppBinaryObjects",
c => new
{
Id = c.Guid(nullable: false),
TenantId = c.Int(),
Bytes = c.Binary(nullable: false),
},
annotations: new Dictionary<string, AnnotationValues>
{
{
"DynamicFilter_BinaryObject_MayHaveTenant",
new AnnotationValues(oldValue: "EntityFramework.DynamicFilters.DynamicFilterDefinition", newValue: null)
},
});
AlterTableAnnotations(
"dbo.AppChatMessages",
c => new
{
Id = c.Long(nullable: false, identity: true),
UserId = c.Long(nullable: false),
TenantId = c.Int(),
TargetUserId = c.Long(nullable: false),
TargetTenantId = c.Int(),
Message = c.String(nullable: false),
CreationTime = c.DateTime(nullable: false),
Side = c.Int(nullable: false),
ReadState = c.Int(nullable: false),
},
annotations: new Dictionary<string, AnnotationValues>
{
And so on..
I have only added those two Indexes yet other tables are now affected?
Thanks