1

私は、asp.net の既定のメンバーシップ プロバイダーを使用して Web サイトを作成しています。「EF リバース POCO ジェネレーター」を使用して、組み込みメンバーシップ テーブルの csharp コードをいくつか取得し、いくつかのクラスを削除して、アプリケーション、メンバーシップ、プロファイル、ロール、およびユーザーのみを保持しました。問題は、データベースの初期化時に例外がスローされるため、それらを使用できないことです。私が遭遇した最初の例外は、主キーが見つからないという不平です。[Key] 注釈を主フィールドに追加し、問題を解決しました。

次に、外部キーが見つからないという 2 番目のエラーが発生したようです。

タイプ 'GoHome.Models.Memberships' と 'GoHome.Models.Users' の間の関連付けのプリンシパル エンドを特定できません。この関連付けのプリンシパル エンドは、リレーションシップ fluent API またはデータ アノテーションを使用して明示的に構成する必要があります。

[ForeignKey] を追加することで解決できるように見えますが、その後も 3 番目のものを取得しましたが、Google で解決策を見つけることができません:

* テーブル 'RolesUsers' に FOREIGN KEY 制約 'FK_dbo.RolesUsers_dbo.Users_Users_UserId' を導入すると、サイクルまたは複数のカスケード パスが発生する可能性があります。ON DELETE NO ACTION または ON UPDATE NO ACTION を指定するか、他の FOREIGN KEY 制約を変更します。*

奇妙なことに、私には「RolesUsers」というテーブルがまったくないように見えます。

メンバーシップとプロファイルにそれぞれ [ForeignKey] を 2 つだけ追加したため、3 番目のエラーが発生しました。コードは次のとおりです。

// Memberships
public class Memberships
{
    //[ForeignKey("Applications")]
    public Guid ApplicationId { get; set; } // ApplicationId
    [Key]
    [ForeignKey("Users")]
    public Guid UserId { get; set; } // UserId (Primary key)
    public string Password { get; set; } // Password
    public int PasswordFormat { get; set; } // PasswordFormat
    public string PasswordSalt { get; set; } // PasswordSalt
    public string Email { get; set; } // Email
    public string PasswordQuestion { get; set; } // PasswordQuestion
    public string PasswordAnswer { get; set; } // PasswordAnswer
    public bool IsApproved { get; set; } // IsApproved
    public bool IsLockedOut { get; set; } // IsLockedOut
    public DateTime CreateDate { get; set; } // CreateDate
    public DateTime LastLoginDate { get; set; } // LastLoginDate
    public DateTime LastPasswordChangedDate { get; set; } // LastPasswordChangedDate
    public DateTime LastLockoutDate { get; set; } // LastLockoutDate
    public int FailedPasswordAttemptCount { get; set; } // FailedPasswordAttemptCount
    public DateTime FailedPasswordAttemptWindowStart { get; set; } // FailedPasswordAttemptWindowStart
    public int FailedPasswordAnswerAttemptCount { get; set; } // FailedPasswordAnswerAttemptCount
    public DateTime FailedPasswordAnswerAttemptWindowsStart { get; set; } // FailedPasswordAnswerAttemptWindowsStart
    public string Comment { get; set; } // Comment

    // Foreign keys
    public virtual Applications Applications { get; set; } //  MembershipApplication
    public virtual Users Users { get; set; } //  MembershipUser
}

// Profiles
public class Profiles
{
    [Key]
    [ForeignKey("Users")]
    public Guid UserId { get; set; } // UserId (Primary key)
    public string PropertyNames { get; set; } // PropertyNames
    public string PropertyValueStrings { get; set; } // PropertyValueStrings
    public byte[] PropertyValueBinary { get; set; } // PropertyValueBinary
    public DateTime LastUpdatedDate { get; set; } // LastUpdatedDate

    // Foreign keys
    public virtual Users Users { get; set; } //  UserProfile
}
4

0 に答える 0