查询

时间:2015-06-14 20:32:04

标签: c# asp.net-mvc

我有一个问题,我在其中创建一个包含列表的对象,将其加载到我的数据库中,运行一个返回该对象的查询,但查找列表为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进行调试)。我无法弄清楚为什么所有其他属性都没问题。有任何想法吗?感谢。

2 个答案:

答案 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; }