新しいASP.NET IDクラスのインターフェイスと、Entity Frameworkコードファーストを使用して作成したデータベースを見ています。私はVisual Studio 2013 RCを使用しています。データベーススキーマが合理的にノーマルに見える一見ASP.NET IDインターフェイスでプライマリおよび外部キーの文字列が使用されるのはなぜですか?
:
しかし、すべてのキーがNVARCHAR(128)
されており、いくつかのクレイジーな理由AspNetUserSecrets.Id
のためにのように見えるPKですAspNetUsers
テーブルの複数のレコードを指すことができます。これは複数のAspNetUsers
が同じパスワードを共有する必要があることを意味しますか?
私はあなたが実装することを強制しているインターフェースを見て見てみると、これらはすべて文字列です...
public class User : IUser
{
public string Id { get; set; }
public string UserName { get; set; }
}
public class UserSecret : IUserSecret
{
public string UserName { get; set; }
public string Secret { get; set; }
}
public class UserRole : IUserRole
{
public string UserId { get; set; }
public string RoleId { get; set; }
}
public class UserClaim : IUserClaim
{
public string UserId { get; set; }
public string ClaimType { get; set; }
public string ClaimValue { get; set; }
}
public class UserManagement : IUserManagement
{
public string UserId { get; set; }
public bool DisableSignIn { get; set; }
public DateTime LastSignInTimeUtc { get; set; }
}
public class Tokens : IToken
{
public string Id { get; set; }
public string Value { get; set; }
public DateTime ValidUntilUtc { get; set; }
}
public class UserLogin : IUserLogin
{
public string UserId { get; set; }
public string LoginProvider { get; set; }
public string ProviderKey { get; set; }
}
public class Role : IRole
{
public string Id { get; set; }
public string Name { get; set; }
}
だから私は、私が実装しなければならない可能性があるという事実を条件に来ていますこれは、PKとFKの関係に文字列を使用します。
しかし、私はそれがなぜこのように構築されているのか知りたいです... ...?
EDIT:時間が経過し、int型(またはGUID)を使用してasp.netのアイデンティティを拡張する方法についての記事が今そこにあるフィールド:
http://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-identity
ベータ版を使用しています。最終版は私の理解とは異なります。 AspNetUserSecretsテーブルを完全に削除したと聞いています。 –
さて、問題の1つを修正します:)しかし、私はまだすべてのキーがNVARCHER(128)である理由を理解できません... –