【发布时间】:2016-09-20 16:00:36
【问题描述】:
感谢您的回复,为了更清楚,我将我的问题重新组织如下:
public class App
{
[Key]
public Guid Id { get; set; }
public virtual IEnumerable<Build> Builds { get; set; }
}
public class Build
{
[Key]
public Guid Id { get; set; }
public Guid AppId { get; set; }
[ForeignKey("AppId")]
public virtual App App { get; set; }
}
public class TestContext : DbContext
{
public TestContext() : base("name=DefaultConnection")
{
Database.SetInitializer<TestContext>(new CreateDatabaseIfNotExists<TestContext>());
}
public DbSet<App> Apps { get; set; }
public DbSet<Build> Builds { get; set; }
}
步骤 1> 保存数据
class Program
{
static void Main(string[] args)
{
using (TestContext context = new TestContext())
{
var id = Guid.NewGuid();
App app = new App() { Id = id };
Build build = new Build()
{
Id = Guid.NewGuid(),
AppId = id
};
context.Apps.Add(app);
context.Builds.Add(build);
context.SaveChanges();;
}
}
}
步骤 2> 获取数据
class Program
{
static void Main(string[] args)
{
using (TestContext context = new TestContext())
{
var builds = context.Apps.FirstOrDefault().Builds;
Console.Read();
}
}
}
var builds 得到一个空值,当我检查数据库时,外键值保存得很好。
【问题讨论】:
-
你的
EF query是什么?把那个代码也放上去。 -
我不确定这是如何设置的。有没有理由让您的 Build 表由一个名为
App的类表示?这只是一个错字吗?那么什么是 AppBuild? -
一个简单的查询>> app.Builds
-
@Ksib,不是错字,只是想测试一下,我已经更新了我的问题,现在更清楚了,谢谢
-
老实说,我不确定您的第 1 步如何将任何内容保存到数据库中。应该是
context.App.Add(app);在您的.SaveChanges()之前
标签: c# entity-framework code-first