2016-12-28 14 views
-1

Entity Frameworkを使用してMVCアプリケーションを作成しています。私は、コントローラでこのように私のデータベースからのデータにアクセスしようとしています:EntityFramework.SqlServer.dllで 'System.Reflection.TargetInvocationException'タイプの例外が発生しましたが、ユーザーコードで処理されませんでした

public ActionResult Classes() 
{ 
    ClassDeclarationsDBEntities1 entities = new ClassDeclarationsDBEntities1(); 
    var model = new ClassesViewModel(); 
    model.task = entities.Tasks.ToList(); 
    model.subject = entities.Subjects.ToList(); 
    model.user = entities.Users.ToList(); 
    model.group = entities.Groups.ToList(); 
    return View(model); 
} 

しかし、グループに沿って、私は言った例外を取得:

型「System.Reflection.TargetInvocationExceptionの例外を「 はEntityFramework.SqlServer.dllで発生したが、ユーザー コードで処理されなかった

マイモデル:

public class ClassesViewModel 
    { 
     public List<Task> task { set; get; } 
     public List<Subject> subject { set; get; } 
     public List<Group> group { set; get; } 
     public List<User> user { set; get; } 
    } 

とグループクラス:

namespace ClassDeclarationsThsesis.Models 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class Group 
    { 
     public Group(int id, int i, string modelGroupName, int teacherUserId) 
     { 
      this.class_id = id; 
      this.group_id = i; 
      this.name = modelGroupName; 
      this.user_id = teacherUserId; 
     } 

     public int class_id { get; set; } 
     public int group_id { get; set; } 
     public string name { get; set; } 
     public int user_id { get; set; } 

     public virtual Subject Subject { get; set; } 
     public virtual User User { get; set; } 
    } 
} 

私はDB内のテーブルが空でないとデータが含まれていることを確信しています。デバッグするとき、それはヌルであると言います。何が間違っていますか?

+0

あなたのモデルを入れてくださいClassesViewModel –

+0

@EduardoSampaio編集を参照してください –

+1

'Group'タイプはどのように修飾されていますか? 'System.Text.RegularExpressions'に' Group'タイプがあります。 – Crowcoder

答えて

2

あなたのModelクラスには、このエラーが発生する原因となるパラメータ化されたコンストラクタがあります。パラメータ化されたコンストラクタを削除してください(コンストラクタを削除した方が良いでしょう)。それとも実際にあなたが本当にを通じて、これらの値をデータベースからレコードを取得または設定されているので、Entity Frameworkのを使用している間、あなたのフィールドまたはプロパティを初期化するためにコンストラクタで値を渡す必要はありませんパラメータなし

private Group() {} 

と1以上のコンストラクタを作りますviewModelまたはビューから取得します。

コンストラクタには、ナビゲーションプロパティの別のモデルの参照またはコレクションのみが含まれています。これは、ナビゲーションコレクションをインスタンス化して、NullReferenceExceptionsに対して少し守ります。しかし、それは必須ではありません。あなたがこのようなコンストラクタを使用したすべてのクラスからあなたのコンストラクタを削除する方が良いでしょう。

関連する問題

 関連する問題