2016-09-19 10 views
0

私はasp.netで新しいです。私はmvcを使って学生コース管理プロジェクトを作ろうとしています。ここでは1つのコースの下に多くのコースと多くの学生がいます。私はそれを行う時に非常に奇妙な問題に直面しています。 は、ここでの問題Problemどのように遅延ロード(エンティティフレームワーク)とSQL Serverで多くの関係を解決するには?

であり、さらに詳細については、私はモデルがCourse StudentCourseStudentのようなマッピングテーブルのようなもので、SQL Serverの学生やコース Student Course のモデルクラスを添付しています。

mappingようCourseStudent、学生及びコースの関係、 Course To CourseStudentStudent to CourseStudent

生徒のコーステーブルのIDがすべて通常IDである場合、遅延読み込み中は大丈夫ですが、StudentIDまたはIDとしてIDの名前をCourseIDとして作成するとエラーになります。問題は、私を悩ませている

モデルコード

public class HomeController : Controller { 

public ActionResult Index() { 

DatabaseContext db = new DatabaseContext(); 
//var x = db.Courses.Include(i => i.Students).Where(i => i.CourseID == 1).Single(); 
var x = db.Courses.Include(i=>i.Students).Where(i=>i.CourseID==1).Si‌​ngle(); 
var y = db.Students.Include(i => i.Courses).Where(i => i.StudentID == 1).Single(); 

return View(); 
} 
} 

。私は解決策が必要です。 はありがとうございました ここでエラーと私のモデルのコードであるcode デバッグ時に、コンテキストクラスがここcontext classあり、最終的には、ブラウザに表示エラーあなたが持つ多くのマッピングに多くを設定するには流暢なAPIを使用する必要があるとしているproblem

+0

画像なしでモデルコードを投稿することはできますか? – Sampath

+0

と 'EF query'のコードと' context class'?あなたの「エラー」は何ですか? – Sampath

+0

私が知る限り、EFはデフォルトで、関係を作成するときに接頭辞なしの 'ID'名と一致します。ところで、「Student」という名前のエンティティに「StudentID」という名前が必要なのはなぜですか? 'ID'だけでは十分理解できないのでしょうか? –

答えて

1

あなたがデータベースに持っているFKの名前。このような

何か:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Course>().HasMany(x => x.Students).WithMany(x=>x.Courses).Map(x=> 
    { 
     x.ToTable("CourseStudent"); 
     x.MapLeftKey("Course_ID"); 
     x.MapRightKey("Student_ID"); 
    }; 
} 

これは

Mapping a Many-to-Many relationship with an Attribute in Entity Framework)にAcccordingマップテーブルの構造についてのEFを告げるサイドノートでは、この設定

への属性の選択肢がありません私は個人的には、怠惰なローディングは、Webアプリケーションでは悪い考えであると思っています。あなたが熱心な負荷を使用していれば、より良い結果を得ます.1つのreqの下でデータベースに複数回アクセスするperfomanceの問題を回避します〜する。

関連する問題