Merci pour les réponses, être plus clare, j'ai re-orged ma question comme suit:code EF Première: Seulement définir la clé étrangère (ID) et d'obtenir une collection nulle de la propriété de navigation
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; }
}
étape 1> Enregistrer les données
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();;
}
}
}
étape 2> données
class Program
{
static void Main(string[] args)
{
using (TestContext context = new TestContext())
{
var builds = context.Apps.FirstOrDefault().Builds;
Console.Read();
}
}
}
Le var construit obtenir une valeur nulle, alors que je vérifie la base de données, e La valeur de la clé étrangère est bien sauvegardée.
Quelle est votre «requête EF» pour cela? mettre ce code aussi. – Sampath
Je ne suis pas sûr comment cela est mis en place. Y a-t-il une raison pour que votre table Build soit représentée par une classe nommée 'App'? Est-ce juste une faute de frappe? Alors qu'est-ce que AppBuild? – KSib
une simple requête >> app.Builds –