我有一个问题,我在其中创建一个包含列表的对象,将其加载到我的数据库中,运行一个返回该对象的查询,但查找列表为null。对象的所有其他属性都应该是它们应该的。我正在使用名为" Ints"但是我已尝试使用其他类型。
这是我的模特:
public class CourseModel
{
public int CourseModelId { get; set; }
public virtual ICollection<int> Ints { get; set; } // the variable in question
public string Name { get; set; }
public string Overview { get; set; }
}
这是我的数据库群(数据库叫做LearnYou):
public class LearnYouDbContextInitializer : DropCreateDatabaseAlways<LearnYouDbContext>
{
protected override void Seed(LearnYouDbContext context)
{
context.Courses.Add(new CourseModel()
{
Name = "C# Programming",
Overview = "You'll learn some C#",
Ints = new List<int> { 1, 42, 3 },
});
context.SaveChanges();
}
}
这是查询对象的控制器代码:
// GET: Course/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
CourseModel courseModel = db.Courses.Find(id);
// DEBUGGING THE PREVIOUS LINE SHOWS INTS IS NULL
if (courseModel == null)
{
return HttpNotFound();
}
return View(courseModel);
}
&#34; Ints&#34;在数据库填充部分中保存上下文后,属性不为null,但在查询时始终为null(我访问页面〜编辑/ 1进行调试)。我无法弄清楚为什么所有其他属性都没问题。有任何想法吗?感谢。
答案 0 :(得分:1)
模型中的ICollection
表示Parent-&gt; Child关系。但是,我怀疑EF将能够确定如何为ICollection
整数创建子表。这就是我要做的。
创建新模型Ints(或其实际代表的任何内容):
public class Ints {
public int Value { get; set;}
}
修改原始模型以使用它:
public class CourseModel
{
public int CourseModelId { get; set; }
public virtual ICollection<Ints> Ints { get; set; } // See the difference?
public string Name { get; set; }
public string Overview { get; set; }
}
这应该有效。
答案 1 :(得分:1)
它无效,因为您直接映射到.net的int基本类型,而Entity Framework不允许它。
在这种情况下,你可以做的是创建你的onw对象和例如
的sql表public class Ints {
{
public Course Course { get; set; }
public int IntValue { ger; set ; }
}
并从CourseModel
引用它public virtual List<Ints> Ints { get; set; }