2011-02-14 7 views
0

私が間違っていることを指摘できる人もいます。私はこのサイトのすべての関連するquestioinを通過しましたが、私の問題はMYSQLの方が多いと思います。問題は、asp.net mvc2のEFを使用して2つのテーブル間の関係を更新しようとするときです。エンティティフレームワーク4.0の問題を使用してasp.net mvc2の多対多の関係を更新する

私はこれらのテーブルを持っており、私はMYSQLを使用しています。

コース

+------------+------------------+------+-----+---------+----------------+ 
| Field  | Type    | Null | Key | Default | Extra   | 
+------------+------------------+------+-----+---------+----------------+ 
| courseid | int(10) unsigned | NO | PRI | NULL | auto_increment | 
| coursename | varchar(100)  | YES |  | NULL |    | 
+------------+------------------+------+-----+---------+----------------+ 

学部:私は教員にコースを関連付けるとき

+-----------+------------------+------+-----+---------+----------------+ 
| Field  | Type    | Null | Key | Default | Extra   | 
+-----------+------------------+------+-----+---------+----------------+ 
| facultyid | int(10) unsigned | NO | PRI | NULL | auto_increment | 
| firstname | varchar(100)  | YES |  | NULL |    | 
| lastname | varchar(100)  | YES |  | NULL |    | 
+-----------+------------------+------+-----+---------+----------------+ 

そして私は、両方の今の関係

+-----------+------------------+------+-----+---------+-------+ 
| Field  | Type    | Null | Key | Default | Extra | 
+-----------+------------------+------+-----+---------+-------+ 
| courseid | int(10) unsigned | NO | MUL | NULL |  | 
| facultyid | int(10) unsigned | NO | MUL | NULL |  | 
+-----------+------------------+------+-----+---------+-------+ 

を作成するには、このテーブルを持っていますコースと教員が存在します。下記のコードを使用してMYSQLエラーが発生しました:以下

[AcceptVerbs("POST")] 
    public ActionResult AddCourse(int id, FormCollection collection) 
    { 
     //I made this static values for debuging 
     Course course = scheduleEnt.Courses1.First(p => p.courseid == 5); //existing course 
     Faculty faculty = scheduleEnt.Faculties1.First(p => p.facultyid == 1); //existing faculty 
     faculty.courses.Add(course); 
     UpdateModel(faculty); 
     scheduleEnt.SaveChanges();//This is where the error generated 

     var cc = 5; 

     return RedirectToAction("AddCourse", new { cid = cc }); 
    } 

これはエラーです:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT 
    `course_faculty`.`courseid`, 
    `course_faculty`.`facultyid` 
' at line 1 
+0

EF1(.net 3.5)と.net connector 6.3.6.0を使用していますが、まったく同じ問題が発生しています。奇妙なのは、問題なく動作している同じプロジェクト/ edmx内に他の多対多の関係があることです。今すぐその底に着きようとしています。 – Tr1stan

答えて

0

OK、それは私の場合は問題がnを有効にするリンクテーブル事実だったことが判明:Mの関係が明示的に主キーを持っていませんでしたセット。したがって、2つのフィールドだけがFKであったにもかかわらず、DBAはそれらを主キーとして設定していませんでした。

私はSSDLセクションの下にEDMXのソースの中に見た場合に更新を実行しようとしたとき、私はなっていたエラーがマッチした要素があったことが判明:

<EntitySet Name="x_map" EntityType="DBModel.Store.x_map" store:Type="Tables" store:Schema="xxx" store:Name="x_map"> 
     <DefiningQuery>SELECT 
    `xxx`.`xxx`, 
    `xxx`.`xxx` 
    FROM `xxx` AS `xxx`</DefiningQuery> 
     </EntitySet> 

そして定義EntityType上記は、

<!--Errors Found During Generation: 
    warning 6002: The table/view 'xxx.x_map' does not have a primary key defined. The key has been inferred and the definition was created as a read-only table/view. 
    --> 

DBスキーマを変更して正しいPKを取得し、私のケースでEDMXを更新すると、問題が解決しました。

これはあなたの問題を解決するための方法です。

関連する問題