【问题标题】:What to do if DbSet<T> MyProperty in entity framework is null如果实体框架中的 DbSet<T> MyProperty 为空怎么办
【发布时间】:2016-06-01 13:37:07
【问题描述】:

我对实体框架很陌生,我有 db first 方法,我正在将我的模型的值设置到 DbSet MyClassName 中。但是当我运行时,它给出了异常“myContext.MyClassName 为空附加信息:“对象引用未设置为对象的实例。”,我尝试了许多解决方案,但无法创建我的 DbSet 的对象。

**1st Tried**

MyClass myObj = new MyClass();
myObj.Id = stud.Id;
myObj.StudId = stud.StudId;
myObj.CourseId = stud.CourseId;

myContext.MyClass.Add(myObj) //Here exception starts with messages.


**2nd Tried**
MyClass langTest = new MyClass();
langTest.Id = 1;
langTest.StudentId = 500;
foreach(MyClass entity in myContext.MyClass)// Here getting exception because MyClass instance is null.
{
   var entry = _context.Entry(langTest);
   if (entry.State == EntityState.Detached)
   {
      myContext.MyClass.Add(entity);
   }
}

如果有任何解决方案或建议,请发表评论,非常感谢。

【问题讨论】:

  • 为什么你的问题标有moq
  • 因为我正在使用 Moq 进行单元测试。我的测试函数工作正常,但是我调用的函数出错了。
  • 我问是因为你似乎没有在构造MyContext,这让我相信你可能在“嘲笑”它。

标签: entity-framework unit-testing asp.net-web-api moq dbcontext


【解决方案1】:

如果您使用 Database First 方法,实体框架将生成您可以使用的 DbContext。在 *.Context.tt 下检查你会发现你应该使用的 DbContext。 并在您的 DbContext 类中检查您是否有实体,例如

public virtual DbSet<yourEntity> entities { get; set; }

【讨论】:

  • 是的,我用的是虚拟的,public virtual DbSet MyClasses { get;放; }
猜你喜欢
  • 2014-04-22
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
相关资源
最近更新 更多