2017-01-04 4 views
0

提案ソリューションのわからないを持っています= manager.Create(user、Password.Text);私は、エラーメッセージ「エンティティオブジェクトはIEntityChangeTrackerの複数のインスタンスによって参照することはできません」が、私は</p> <p>IdentityResult結果にこのエラーメッセージをaspnet.identityを使用してユーザーを追加して取得しようとしています

それは私がエラーメッセージを研究しようとしたが、この例ではどのように適用するかわからないしました

protected void CreateUser_Click(object sender, EventArgs e) 
{ 
    var manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
    var signInManager = Context.GetOwinContext().Get<ApplicationSignInManager>(); 

    int x = int.Parse(Address.SelectedValue.ToString()); 
     using (var db = new ApplicationDbContext()) 
     { 
      physAddress = db.PhysAddress.Find(x); 
      var user = new ApplicationUser() { UserName = Email.Text, Email = Email.Text, FirstName = FirstName.Text, LastName = LastName.Text, PhoneNumber = PhoneNumber.Text, HomePhone = HomePhone.Text, PhysAddressId = physAddress }; 

      IdentityResult result = manager.Create(user, Password.Text); 

      if (result.Succeeded).... 

に含まれているコード。任意の提案をいただければ幸いです。

Iは次のように定義されたクラスを有し、IdentityModels.csにEF

public class PhysAddress 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int PhysAddressId { get; set; } 
    [Required] 
    public string Street { get; set; } 
    [Required] 
    public string City { get; set; } 
    [Required] 
    public string State { get; set; } 
    [Required] 
    public string ZipCode { get; set; } 
    [Required] 

そしてApplicationDbContext以下を使用して、そのテーブルから行を取得するためにDBを用いたIdentityModelsで

public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 
    public DbSet<PhysAddress> PhysAddress { get; set; } 

下に有しますユーザーごとにプロパティを追加しました

 public virtual PhysAddress PhysAddressId { get; set; } 
+0

コードが正しく表示されません。なぜあなたは新しいApplicationDbContextを持っていて、それからマネージャを使ってユーザーを追加するのですか?ユーザーマネージャはコンテキスト自体ではありませんか? – Yaser

+0

なぜ私がdbを使用していたのかについての追加コードを参照してください – diannes

+0

owinコンテキストに同じアドレスエンティティを持っていますか?そうであれば両方のコンテキストでそのアドレスの変更を追跡しようとしますユーザー – Yaser

答えて

0

私はbを解決できましたyを使用する

((IObjectContextAdapter)db).ObjectContext.Detach(physAddress); 
関連する問題

 関連する問題