メンバーシップ propvider を再実装し、元の DB スキームを維持したいと考えています。私は2つのクラスを持っています:
class UserProfile
{
public int UserId {get;set} //PK
......
}
class Membership
{
public int UserId {get;set;} //FK to UserProfile.UserId
.........
}
ここで、FluentAPI を使用して、Membership.UserId を FK として UserProfile.UserId にアタッチし、Membership テーブルの PK にもしたいと考えています。
UserProfile.UserId は DB で生成された ID であり、決して繰り返されないことを保証できます。次のコードを試しましたが、移行の作成中にエラーで失敗しました:
型の各プロパティ名は一意である必要があります。プロパティ名 'UserId' は既に定義されています。
HasKey(k => k.UserId); //Declare it as PK !!!!
Map(m => m.ToTable("webpages_membership")); //Setup table name
HasRequired(t => t.User) //Nav.property to the UserProfile
.WithRequiredDependent(t1 => t1.Membership) //Rev.nav.property from the UserProfile
.Map(m => m.MapKey("UserId")); //FK to the UserProfile !!!!
感嘆符でマークされた行を削除すると、移行は正常に作成されましたが、列名が間違っていました。