В отношениях один к одному один конец должен быть основным, а второй конец должен быть зависимым. Основной конец - тот, который будет вставлен первым и который может существовать без зависимого. Зависимый конец - тот, который должен быть вставлен после принципала, потому что у него есть внешний ключ для принципала.
В случае фреймворка сущности FK в зависимом случае также должен быть его PK, поэтому в вашем случае вы должны использовать:
public class Boo
{
[Key, ForeignKey("Foo")]
public string BooId{get;set;}
public Foo Foo{get;set;}
}
Или плавное отображение
modelBuilder.Entity<Foo>()
.HasOptional(f => f.Boo)
.WithRequired(s => s.Foo);