2016-07-20 15 views
0

私は非常に具体的な質問があります。 以下はappointments.csvalid_clients.csの2モデルです。これらのモデルは、両方とも2つのデータベーステーブルにマップされています。参照テーブルを変更せずに参照制約付きモデルから単一テーブルを更新

appointmnets.csこれは、参照するvalid_clients.cs

public partial class appointments 
    { 

     public int appt_client_id { get; set; } 

     public int customer_id { get; set; } 

     [Key] 
     public int appt_id { get; set; } 

     public DateTime appt_date_time { get; set; } 

     [ForeignKey("appt_client_id")] 
     public virtual valid_clients Client { get; set; } 

    } 

valid_clients.cs

public partial class valid_clients 
    { 

     [Key] 
     public int client_id { get; set; } 

     [Required] 
     [StringLength(30)] 
     public string client_name { get; set; } 

     public bool valid_client { get; set; } 
} 

は今、私は、データベースappointmentsテーブル内の単一のレコードを更新する必要があります。私は、コントローラのメソッドのupdate.Butこのコードでは、valid_clientsテーブルに新しいレコードを挿入し、appointmentsに新しいレコードを挿入する次のコードがあります。

[HttpPost] 
     public ActionResult Confirm1(appointments appointment,string submit) 
     { 
      using (var db1 = new appointmentContext()){ 
       appointments app = db1.appointments.Single(d => d.appt_id == appointment.appt_id); 
       app = appointment; 
       app.appt_status = "RESCHED"; 
       app.time_stamp = DateTime.Now; 

       //Saving the changes in the database 
       try 
       { 
        db.appointments.Add(app); 
        db.SaveChanges(); 
       } 

       catch (System.Data.Entity.Validation.DbEntityValidationException e) 
       { 

       } 
      } 
      return View("Edit", appointment); 
     } 

質問: がどのように私は同じ私のモデル構造を保つことができるだけvalid_clientsテーブルを変更せずにappointmentsテーブル内の単一のレコードを更新します。

答えて

0

あなたのコードでは、新しいappointmentsが作成されます。既存のものは更新されません。

、あなたのモデルを更新したい場合、あなたはこのような何かを:

appointments app = db1.appointments.Single(d => d.appt_id == appointment.appt_id); 
app.appt_status = "RESCHED"; 
app.time_stamp = DateTime.Now; 
app.OtherValue = appointment.OtherValue; 
db.SaveChanges(); 

、あなたが行を残して:

app = appointment; 
db.appointments.Add(app); 

app = appointment;一つは、実際にあなたが持っていたappointmentsを編集しません。選択された。 appを別のものに変更するだけです。

db.appointments.Add(app);は、必要なものではないような新しい行adnを追加します。

+0

私は前述のように変更を加えましたが、既存のレコードは更新されません –

+0

@RudraniAngira現在のコードはどのように見えますか?レコードが更新されていることを確認するために何を探していますか? –

+0

私はdb1の代わりにdbを使用していました。笑。お手伝いありがとう。 –

関連する問題