私はasp.netmvc3を初めて使用します
標準のasp.netメンバーシッププロバイダーを介して追加のユーザー情報を保存しようとしています。新しいエンティティUserAddressを作成し、メンバーシップAPIを使用してaspnet_tablesと同期します。
ただし、UserAddressクラスに変更を加えても、asp.netはモデルを削除して再作成しません。エラーが発生します
使用中のため、データベースを削除できません。
私はstackoverflowとgoogleを検索しました。基本的に、私の問題はこれに似ています
EntityFramework4コードファーストで使用中のデータベースエラー
しかし、私はクリスが解決策として提案するものを実装する方法がわかりません:
「これは、DBに対してMembershipメソッドを呼び出していたために発生し、競合が発生していました。Membershipシステムを使用する前に、イニシャライザーを強制的に実行してシードすることで、これを解決しました。」
私のコードはデータリポジトリのこの時点でフォールオーバーするため、これがデータベースが使用されている理由であると確信しています。
var userid = Membership.GetUser.ProviderUserKey.ToString();
return db.UserAddress.SingleOrDefault(a => a.UserId == userid);
メンバーシップシステムの前にイニシャライザを強制的に実行するにはどうすればよいですか?
私のコードの抜粋は以下のとおりです。
public class UserAddress
{
public int UserAddressId { get; set; }
public string UserId { get; set; }
public string FlatNo { get; set; }
public string BuildingName { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string PostCode { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Country { get; set; }
public long MobilePhone { get; set; }
}
public class NPLHWebsiteDb : DbContext
{
public DbSet<UserAddress> UserAddress { get; set; }
}
public class NPLHWebsiteInitializer : DropCreateDatabaseIfModelChanges<NPLHWebsiteDb>
{
protected override void Seed(NPLHWebsiteDb context)
{
var userAddress = new List<UserAddress>
{
new UserAddress {
UserAddressId = 1,
UserId = "153",
FlatNo = "6.4",
BuildingName = "Wilton Plaza",
MobilePhone = 9810110123,
}
};
userAddress.ForEach(a => context.UserAddress.Add(a));
context.SaveChanges();
}
ありがとう