Thanks for the replies, to be more clare, i have re-orged my question as follows:

```
 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; }
}

```

Step 1> Save Data

```
 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();;
        }

    }
}

```

Step 2> Get Data

```
class Program
{
    static void Main(string[] args)
    {
        using (TestContext context = new TestContext())
        {
            var builds = context.Apps.FirstOrDefault().Builds;
            Console.Read();
        }
    }
}

```

The var builds get a null value, while i check database, the foreign key value is well saved.