You will not find the HasOptional equivalent method in EF7. By convention, if your FK property is nullable , your navigation property will be considered optional
modelBuilder.Entity<Blog>() .HasOne(p => p.Document) .WithOne(i => i.CancelNote) .HasForeignKey<Document>(b => b.CancelNoteForeignKey);
About your second question, EF Core (EF7) does not support Lazy Loading. In this link
source share