protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity <Student>(x => { x.ToTable("Student").HasKey(k => k.Id); x.Property(p => p.Id).HasColumnName("StudentID"); x.Property(p => p.Email) .HasConversion(p => p.Value, p => Email.Create(p).Value); x.OwnsOne(p => p.Name, p => { p.Property <long?>("NameSuffixID").HasColumnName("NameSuffixID"); p.Property(pp => pp.First).HasColumnName("FirstName"); p.Property(pp => pp.Last).HasColumnName("LastName"); p.HasOne(pp => pp.Suffix).WithMany().HasForeignKey("NameSuffixID").IsRequired(false); }); x.HasOne(p => p.FavoriteCourse).WithMany(); x.HasMany(p => p.Enrollments).WithOne(p => p.Student) .OnDelete(DeleteBehavior.Cascade) .Metadata.PrincipalToDependent.SetPropertyAccessMode(PropertyAccessMode.Field); }); modelBuilder.Entity <Suffix>(x => { x.ToTable("Suffix").HasKey(p => p.Id); x.Property(p => p.Id).HasColumnName("SuffixID"); x.Property(p => p.Name); }); modelBuilder.Entity <Course>(x => { x.ToTable("Course").HasKey(k => k.Id); x.Property(p => p.Id).HasColumnName("CourseID"); x.Property(p => p.Name); }); modelBuilder.Entity <Enrollment>(x => { x.ToTable("Enrollment").HasKey(k => k.Id); x.Property(p => p.Id).HasColumnName("EnrollmentID"); x.HasOne(p => p.Student).WithMany(p => p.Enrollments); x.HasOne(p => p.Course).WithMany(); x.Property(p => p.Grade); }); }
public IActionResult Create([FromBody] CreateCustomerRequest request) { Result <CustomerName> customerName = CustomerName.Create(request.Name); Result <Email> email = Email.Create(request.Email); Result result = Result.Combine(customerName, email); if (result.IsFailure) { return(Error(result.Error)); } if (_customerRepository.GetByEmail(email.Value) != null) { return(Error("Email is already in use: " + request.Email)); } var customer = new Customer(customerName.Value, email.Value); _customerRepository.Save(customer); return(Ok()); }