I am using entity framework code first and mapping our unidata files to tables to get data. I am wanting to join the tables or use navigation properties. The 2 tables share a common field called WorkInProgressOperationId. I have tried using join and navigation properties but it does not seem to work when mapping to unidata files.Is this possible?
public class WorkInProgressMapping : EntityTypeConfiguration<WorkInProgress>
{
public WorkInProgressMapping()
{
this.ToTable("WIPMASTER");
this.HasKey(e => e.WorkInProgressId).Ignore(e => e.EntityId);
this.Property(e => e.WorkInProgressId).HasColumnName("@ID");
this.Property(e => e.SequenceNumber).HasColumnName("OPER_SEQ_NBR");
this.Property(e => e.WorkOrderNumber).HasColumnName("WORK_ORDER");
this.Property(e => e.StartQuantity).HasColumnName("SCHED_COMP_QTY");
this.Property(e => e.JobNumber).HasColumnName("JOB_NBR");
this.Property(e => e.JobDetailId).HasColumnName("JOBDET_ID");
this.Property(e => e.ComputerGeneratedNumber).HasColumnName("CPN");
this.Property(e => e.ItemNumber).HasColumnName("ITEM_NBR");
this.Property(e => e.ParentWorkOrder).HasColumnName("PARENT_WO");
this.Property(e => e.ParentDueDate).HasColumnName("SCHED_COMP_DATE");
this.Property(e => e.WorkOrderIssueDate).HasColumnName("RELEASE_DATE");
this.Property(e => e.WorkInProgressOperationId).HasColumnName("WIPOPERACT_ID");
}
}
public class WorkInProgressOperationMapping : EntityTypeConfiguration<WorkInProgressOperation>
{
public WorkInProgressOperationMapping()
{
this.ToTable("WIPOPER");
this.HasKey(e => e.WorkInProgressOperationId).Ignore(e => e.EntityId);
this.Property(e => e.WorkInProgressOperationId).HasColumnName("@ID");
this.Property(e => e.OperationNumber).HasColumnName("OPERATION_NBR");
this.Property(e => e.OperationSequence).HasColumnName("OPER_SEQ");
this.Property(e => e.WorkOrder).HasColumnName("WORK_ORDER");
this.Property(e => e.NextSequence).HasColumnName("NEXT_SEQ");
this.Property(e => e.Status).HasColumnName("OPER_STATUS");
this.Property(e => e.QuantityComplete).HasColumnName("QTY_COMPLETE");
this.Property(e => e.SalesOrderDeliveryDate).HasColumnName("DUE_SO");
this.Property(e => e.WorkOrderDeliveryDate).HasColumnName("WO_DUE");
this.Property(e => e.StartingQuantity).HasColumnName("EXP_START_QTY");
}
}
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test_EF5
{
public class Customer
{
public string CustomerID { get; set; }
public string FirstName { get; set; }
public virtual ICollection<Rental> Rentals { get; set; }
}
public class Rental
{
public string RentalID { get; set; }
public string CustomerID { get; set; }
public decimal Balance { get; set; }
public virtual Customer Customer { get; set; }
}
public class CustomerMapping : EntityTypeConfiguration<Customer>
{
public CustomerMapping()
{
this.ToTable("MEMBERS");
this.Property(e => e.CustomerID).HasColumnName("MEMBERS_PK");
this.Property(e => e.FirstName).HasColumnName("FIRST_NAME");
this.HasKey(e => e.CustomerID);
}
}
public class RentalMapping : EntityTypeConfiguration<Rental>
{
public RentalMapping()
{
this.ToTable("RENTAL_DETAILS");
this.Property(e => e.RentalID).HasColumnName("RENTAL_DETAIL_PK");
this.Property(e => e.Balance).HasColumnName("BALANCE.DUE");
this.Property(e => e.CustomerID).HasColumnName("CUSTOMER.CODE");
this.HasKey(e => new { e.RentalID });
HasRequired(p => p.Customer)
.WithMany(b => b.Rentals)
.HasForeignKey(p => new { p.CustomerID });
}
}
public class CustomerContext : DbContext
{
public CustomerContext()
{
}
public DbSet<Customer> Customers { get; set; }
public DbSet<Rental> Rentals { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.Add(new CustomerMapping());
modelBuilder.Configurations.Add(new RentalMapping());
}
}
}