Ваш ключ генерируется базой данных, поэтому вам нужно дать БД шанс сделать это:
var _result = await db.ToDos.AddAsync(toDo);
db.SaveChanges(); // this generates and fetches the new key
UserToDo userToDo = new UserToDo { ToDoId = _result.Entity.Id, UserEmail = User.Identity.Name};
А потом вам все еще нужно сохранить изменения во второй раз. Посмотрите в свойствах навигации для лучшего пути.
При использовании только UserEmail в качестве ключа в UserToDo каждый пользователь (электронная почта) может иметь только 1 элемент ToDO в вашей базе данных.
public class UserToDo
{
[Key]
public string UserEmail { get; set; }
[Key] // add this to create a composite key
public int ToDoId { get; set; }
}