看來,因爲它使用DB-第一做延遲加載不工作相同的代碼一:延遲加載的問題與EF5和代碼首先
考慮:
public class Project
{
[Key]
public long ProjectId { get; set; }
[Required]
[MaxLength(60)]
public virtual string Name { get; set; }
}
和:
public class TestCase
{
[Key]
public long TestCaseId { get; set; }
[Required]
[ForeignKey("ProjectId")]
public virtual Project Project { get; set; }
public virtual long ProjectId { get; set; }
}
在此的DbContext:
public class TestDbContext : DbContext
{
public TestDbContext() : base("TestIckle")
{
}
public DbSet<Project> Projects { get; set; }
public DbSet<TestCase> TestCases { get; set; }
}
當我嘗試這在我的代碼它不工作:
Console.WriteLine(_db.Configuration.LazyLoadingEnabled); //prints true
TestDbContext _db = new TestDbContext();
var testcase = _db.TestCases.Create();
testcase.Project = _db.Projects.Find(7);
//the following line outputs 0 with Code-First
//the following line outputs 7 with DB-First
Console.WriteLine(testcase.ProjectId);
是一個代碼,第一個模型能夠不到DB-第一個?似乎很奇怪,我會爲它分配nav屬性和pkey,這讓我認爲我配置了錯誤的東西。
以下有沒有工作?
var x = _db.TestCases.Create();
x.ProjectId = 7;
Console.WriteLine(x.Project.Name); //this never seems to work
會很好,因爲x知道它連接的是哪個上下文,我本以爲它可以處理這種情況。
謝謝。
你能清理你的第四個例子嗎?我不確定你將如何從'testcase.Project'獲得0或7。 – IronMan84 2013-03-19 14:56:05