Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/Identity/src/AspNetCoreCompat/IdentityDbContext.cs')
-rw-r--r--src/Identity/src/AspNetCoreCompat/IdentityDbContext.cs140
1 files changed, 140 insertions, 0 deletions
diff --git a/src/Identity/src/AspNetCoreCompat/IdentityDbContext.cs b/src/Identity/src/AspNetCoreCompat/IdentityDbContext.cs
new file mode 100644
index 0000000000..e773e39574
--- /dev/null
+++ b/src/Identity/src/AspNetCoreCompat/IdentityDbContext.cs
@@ -0,0 +1,140 @@
+// Copyright (c) Microsoft Corporation, Inc. All rights reserved.
+// Licensed under the MIT License, Version 2.0. See License.txt in the project root for license information.
+
+using System;
+using System.Collections.Generic;
+using System.Data.Common;
+using System.Data.Entity;
+using System.Data.Entity.Infrastructure;
+using System.Data.Entity.Validation;
+using Microsoft.AspNet.Identity.EntityFramework;
+
+namespace Microsoft.AspNet.Identity.CoreCompat
+{
+ public class IdentityDbContext<TUser> :
+ IdentityDbContext<TUser, IdentityRole, string,
+ IdentityUserLogin, IdentityUserRole, IdentityUserClaim, IdentityRoleClaim>
+ where TUser : IdentityUser
+ {
+ public IdentityDbContext() : base()
+ {
+
+ }
+
+ public IdentityDbContext(DbCompiledModel model)
+ : base(model)
+ {
+
+ }
+
+ public IdentityDbContext(string nameOrConnectionString)
+ : base(nameOrConnectionString)
+ {
+
+ }
+
+ public IdentityDbContext(string nameOrConnectionString, DbCompiledModel model)
+ : base(nameOrConnectionString, model)
+ {
+
+ }
+
+ public IdentityDbContext(DbConnection existingConnection, bool contextOwnsConnection)
+ : base(existingConnection, contextOwnsConnection)
+ {
+
+ }
+ //
+ // Summary:
+ // Constructs a new context instance using the existing connection to connect to
+ // a database, and initializes it from the given model. The connection will not
+ // be disposed when the context is disposed if contextOwnsConnection is false.
+ //
+ // Parameters:
+ // existingConnection:
+ // An existing connection to use for the new context.
+ //
+ // model:
+ // The model that will back this context.
+ //
+ // contextOwnsConnection:
+ // Constructs a new context instance using the existing connection to connect to
+ // a database, and initializes it from the given model. The connection will not
+ // be disposed when the context is disposed if contextOwnsConnection is false.
+ public IdentityDbContext(DbConnection existingConnection, DbCompiledModel model, bool contextOwnsConnection)
+ : base(existingConnection, model, contextOwnsConnection)
+ {
+ }
+ }
+
+ public class IdentityDbContext<TUser, TRole, TKey, TUserLogin, TUserRole, TUserClaim, TRoleClaim> :
+ IdentityDbContext<TUser, TRole, TKey, TUserLogin, TUserRole, TUserClaim>
+ where TUser : IdentityUser<TKey, TUserLogin, TUserRole, TUserClaim>
+ where TRole : IdentityRole<TKey, TUserRole>
+ where TUserLogin : IdentityUserLogin<TKey>
+ where TUserRole : IdentityUserRole<TKey>
+ where TUserClaim : IdentityUserClaim<TKey>
+ where TRoleClaim : IdentityRoleClaim<TKey>
+ {
+
+ public IdentityDbContext() : base()
+ {
+ }
+
+ public IdentityDbContext(DbCompiledModel model)
+ : base(model)
+ {
+ }
+
+ public IdentityDbContext(string nameOrConnectionString)
+ : base(nameOrConnectionString)
+ {
+ }
+
+ public IdentityDbContext(string nameOrConnectionString, DbCompiledModel model)
+ : base(nameOrConnectionString, model)
+ {
+ }
+
+ public IdentityDbContext(DbConnection existingConnection, bool contextOwnsConnection)
+ : base(existingConnection, contextOwnsConnection)
+ {
+ }
+
+ public IdentityDbContext(DbConnection existingConnection, DbCompiledModel model, bool contextOwnsConnection)
+ : base(existingConnection, model, contextOwnsConnection)
+ {
+ }
+
+ protected override void OnModelCreating(DbModelBuilder modelBuilder)
+ {
+ base.OnModelCreating(modelBuilder);
+
+ var userModel = modelBuilder.Entity<TUser>();
+
+ userModel.Property(x => x.LockoutEndDateUtc).HasColumnName("LockoutEnd");
+ userModel.Property(x => x.ConcurrencyStamp).IsConcurrencyToken(true);
+
+ modelBuilder.Entity<TRoleClaim>()
+ .HasKey(x => x.Id)
+ .Map(config => config.ToTable("AspNetRoleClaims"));
+
+ modelBuilder.Entity<TRole>().Property(x => x.ConcurrencyStamp).IsConcurrencyToken(true);
+ }
+
+ protected override DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry, IDictionary<object, object> items)
+ {
+ if (entityEntry.Entity is TUser && entityEntry.State == EntityState.Modified)
+ {
+ entityEntry.Cast<TUser>().Property(p => p.ConcurrencyStamp).CurrentValue = Guid.NewGuid().ToString();
+ }
+ else if (entityEntry.Entity is TRole && entityEntry.State == EntityState.Modified)
+ {
+ entityEntry.Cast<TRole>().Property(p => p.ConcurrencyStamp).CurrentValue = Guid.NewGuid().ToString();
+ }
+ return base.ValidateEntity(entityEntry, items);
+ }
+
+ public virtual IDbSet<TRoleClaim> RoleClaims { get; set; }
+ }
+}