0

データベースに保存しようとすると、このエラーが発生します。コントローラーには Edit HttpPut があります

 public ActionResult EditSubject(Models.xxxx model)
 {
    //Database Model Class    
    SubjectDB subjectdb = new SubjectDB();
    // Name of DB Access in Web.config
    BeaconDBEntities db = new BeaconDBEntities();


    if (ModelState.IsValid)
    {
        subjectdb.SubjectId = model.SubjectId;

        db.SubjectDBs.Add(subjectdb);   --> Pops InvalidOperationsException
        db.SaveChanges();
    }

Modelsフォルダーには、データベーステーブルのモデルがあります

SubjectDB.cs

    namespace xxx.Models
    {
       public class SubjectDB
       {
          public string SubjectId { get; set;}
       }
       public class BeaconDBEntities: DbContext
       {
           public DbSet<SubjectDB> SubjectDBs { get; set; }
       }
    }

Web.config は、データベースの接続文字列です

    <coneectionStrings>
       <add name="BeaconDBEntities" ...............
    </connectionStrings>
4

2 に答える 2

0

データを編集するとき、エンティティ フレームワークを使用している場合、コードの下にある場合、このようなコードを記述する必要はないと思います

db.SubjecDBs.Add(subjectdb);   
        db.SaveChanges();

最初にデータを更新するとき、最初にこのようなIDでデータを取得し、エンティティクラスを作成してオブジェクトを作成します。あなたのエンティティクラスは以下のようなあなたのテーブルです

SubjecDBs objsub=new SubjecDBs();

var data =db.db.SubjecDBs.where(x=>x.SubjectID==ID).ToList();

次に、以下のように更新しないデータを一致させます

objsub.SubjecName=data[0].SubjecName

そして、更新しないフィールドと一致させてから、次のようなコードの下に記述します

db.SaveChanges();

私はこれがあなたを助けると思う...

于 2012-09-26T17:01:03.650 に答える
0

最初に目にするのは、接続文字列名「BeaconDBEntites」が DbContext 継承クラス名「BeaconDBEntities」と一致しないことです (エンティティという単語に「i」がありません)。それを変更してみて、それが修正されるかどうかを確認してください。

于 2012-09-26T16:25:14.400 に答える