Mac*_*icz -1 .net c# entity-framework
我正在使用实体框架创建 MVC 应用程序。我试图以这种方式从控制器中的数据库访问数据:
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);
}
Run Code Online (Sandbox Code Playgroud)
然而,根据小组的说法,我得到一个例外:
EntityFramework.SqlServer.dll 中发生“System.Reflection.TargetInitationException”类型的异常,但未在用户代码中处理
我的型号:
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; }
}
Run Code Online (Sandbox Code Playgroud)
和团体课:
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; }
}
}
Run Code Online (Sandbox Code Playgroud)
我确信数据库中的表不为空并且包含数据。调试的时候提示为null。我做错了什么?
您的模型类具有参数化构造函数,这就是您收到此错误的原因。删除参数化构造函数(如果删除构造函数会更好)。或者再创建一个不带参数的构造函数
private Group() {}
Run Code Online (Sandbox Code Playgroud)
实际上,在使用实体框架时,您确实不需要通过构造函数传递值来初始化字段或属性,因为您是从数据库获取记录或通过 viewModel 或视图设置这些值。
并且构造函数仅包含导航属性的另一个模型的引用或集合,这有助于实例化导航集合以防止您受到一点点侵害NullReferenceExceptions。但这不是必需的。因此,最好从像这样使用构造函数的每个类中删除构造函数。
| 归档时间: |
|
| 查看次数: |
5524 次 |
| 最近记录: |