// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using Microsoft.Data.Entity; using Microsoft.Data.Entity.Metadata; namespace Microsoft.AspNet.Identity.EntityFramework.InMemory.Test { public class InMemoryContext : InMemoryContext { public InMemoryContext() { } public InMemoryContext(IServiceProvider serviceProvider) : base(serviceProvider) { } } public class InMemoryContext : InMemoryContext where TUser : IdentityUser { public InMemoryContext() { } public InMemoryContext(IServiceProvider serviceProvider) : base(serviceProvider) { } } public class InMemoryContext : DbContext where TUser : IdentityUser where TRole : IdentityRole where TUserLogin : IdentityUserLogin where TUserRole : IdentityUserRole where TUserClaim : IdentityUserClaim where TKey : IEquatable { public DbSet Users { get; set; } public DbSet Roles { get; set; } public DbSet RoleClaims { get; set; } public InMemoryContext(IServiceProvider serviceProvider) : base(serviceProvider) { } public InMemoryContext() { } protected override void OnConfiguring(DbContextOptions builder) { // Want fresh in memory store for tests always for now builder.UseInMemoryStore(persist: false); } protected override void OnModelCreating(ModelBuilder builder) { builder.Entity(b => { b.Key(u => u.Id); b.Property(u => u.UserName); b.ForRelational().Table("AspNetUsers"); }); builder.Entity(b => { b.Key(r => r.Id); b.ForRelational().Table("AspNetRoles"); }); builder.Entity(b => { b.Key(r => new { r.UserId, r.RoleId }); b.ForeignKey(f => f.UserId); b.ForeignKey(f => f.RoleId); b.ForRelational().Table("AspNetUserRoles"); }); builder.Entity(b => { b.Key(l => new { l.LoginProvider, l.ProviderKey, l.UserId }); b.ForeignKey(f => f.UserId); b.ForRelational().Table("AspNetUserLogins"); }); builder.Entity(b => { b.Key(c => c.Id); b.ForeignKey(f => f.UserId); b.ForRelational().Table("AspNetUserClaims"); }); builder.Entity>(b => { b.Key(c => c.Id); b.ForeignKey(f => f.RoleId); b.ForRelational().Table("AspNetRoleClaims"); }); } } }