【问题标题】:Read object inside object in entity framework from database从数据库中读取实体框架中对象内的对象
【发布时间】:2015-09-22 00:52:26
【问题描述】:

我正在为学校制作电影店。我有一个电影作为域模型,每个模型都有另一个模型 Genre 作为属性。现在,当我将其保存到数据库时,它会将电影和流派添加到他们的每个表中,它会为电影的 det 创建流派 ID,并将其与流派表匹配。

问题是,当我再次从数据库中读取电影时,类型为空。它甚至没有流派 ID。

如何将数据库中的流派分配给电影?

public void Add(Movie mov)
    {

        using (Context mCon = new Context())
        {
            mCon.Movies.Add(mov);
            mCon.SaveChanges();
        }
    }

this^ 是我添加电影的地方。

public List<Movie> GetAllMovies()
    {
        using (Context mCon = new Context())
        {
            return mCon.Movies.ToList();
        }
    }

这是我从数据库中读回的地方

编辑*

Movie movie = new Movie() { Id = 1, Name = "Movie1", Price = 200d, Genre = new Genre() { Id = 1, Name = "Genre1" } };

编辑** 我的上下文包含流派和电影的数据库集。

我将我创建的电影添加到我的外观:

facade.GetMovieRep().Add(movie);

【问题讨论】:

  • 如何将Genre 分配给Movie?请显示该代码?是否涉及表单,网络、移动或桌面?
  • 嗨 Jonas Olesen,你必须这样做,检查这篇文章 stackoverflow.com/questions/3356541/… 这是你在模型结构上的一些正常问题,因为你必须包含关系
  • @GlennFerrie 我在底部添加了作业,目前我只尝试在控制台应用程序中使用它
  • @JonasOlesen 以及如何将它们添加到您的上下文中?意思是你添加流派?是否为每部电影创建了一个新类型?
  • 您的上下文是否包含 DbSet 属性?

标签: c# entity-framework


【解决方案1】:

我找到了解决办法

当我将上下文返回到列表时,我刚刚添加了 .include("Genre")

【讨论】:

  • 如果您想使用延迟加载,您可以将流派的属性设置为虚拟。这告诉 EF 将它们作为结果的一部分。
猜你喜欢
  • 2011-02-03
  • 2020-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多