This question is locked. New answers and comments are not allowed.
Hello.
I have a view, called "OperationAlternative".
namespace idee5.Dispatcher.Model.DAL { public class OperationAlternative { [Key] public virtual int WorkOrderId { get; set; } public virtual int? WorkplaceId { get; set; } /// <summary> /// Highest rank means highest efficiency /// </summary> [Required] public virtual char EfficiencyRank { get; set; } [Key] public virtual int OperationId { get; set; } [Required] public virtual uint SequenceNumber { get; set; } // association properties // association: public virtual Workplace Workplace { get; set; } // association: CurrentOperation public virtual Operation Operation { get; set; } }}This view is referenced by "Operation". A common table.
namespace idee5.Dispatcher.Model.DAL { public partial class Operation : IMasterSystemId { [Required(),Key()] public virtual int Id { get; set; } [Required] public virtual uint SequenceNumber { get; set; } /// <summary> /// Taktzeit /// </summary> public virtual float CycleTime { get; set; } public virtual OperationProcessingStates ProcessingStatus { get; set; } public virtual float QuantityPerCycle { get; set; } [Required()] public virtual string Description { get; set; } /// <summary> /// Produzierte Menge der Komponente /// </summary> public virtual float QuantityConfirmed { get; set; } /// <summary> /// Ausschussmenge der Komponente /// </summary> public virtual float QuantityDefective { get; set; } /// <summary> /// Menge der Komponenten mit verminderter Qualität. /// </summary> public virtual float QuantityLessQuality { get; set; } /// <summary> /// Rüstzeit /// </summary> public virtual DateTime SetupTime { get; set; } /// <summary> /// Stückzeit /// </summary> public virtual DateTime TimePerUnit { get; set; } /// <summary> /// Geplanter Start des Arbeitsgangs /// </summary> public virtual DateTime? StartScheduled { get; set; } /// <summary> /// Geplantes Ende des Arbeitsgang /// </summary> public virtual DateTime? EndScheduled { get; set; } /// <summary> /// Tatsächlicher Start des Arbeitsgang /// </summary> public virtual DateTime? StartActual { get; set; } /// <summary> /// Tatsächliches Ende des Arbeitsgang /// </summary> public virtual DateTime? EndActual { get; set; } public virtual int WorkOrderId { get; set; } public virtual int? CycleTimeUoM { get; set; } public virtual int? WorkplaceId { get; set; } public virtual int? OperatingResourceId { get; set; } /// <summary> /// Berechneter Start des Arbeitsgang /// </summary> public virtual DateTime? StartCalculated { get; set; } /// <summary> /// Highest rank means highest efficiency /// </summary> [Required] public virtual char EfficiencyRank { get; set; } /// <summary> /// Liefezeit nach Arbeitsgang /// </summary> public virtual DateTime WaitTimeAfter { get; set; } public virtual DateTime? EarliestStart { get; set; } public virtual DateTime? LatestEnd { get; set; } /// <summary> /// false if the operation has changes, not synchronized with the master system /// </summary> public virtual bool IsSynchronized { get; set; } // Implementation of IMasterSystemId /// <summary> /// Master systems hierarchical identification. E.g. Company and/orPlant /// </summary> public virtual string MasterSystemHierarchy { get;set; } /// <summary> /// Master systems unique identification within the hierarchy. /// </summary> public virtual string MasterSystemId { get;set; } // association properties // association: Components private IList<MaterialComponent> materialComponents = new List<MaterialComponent>(); public virtual IList<MaterialComponent> MaterialComponents { get { return this.materialComponents;} } // association: transactions private IList<Transaction> transactions = new List<Transaction>(); public virtual IList<Transaction> Transactions { get { return this.transactions;} } // association: Messages private IList<MessageEvent> messageEvents = new List<MessageEvent>(); public virtual IList<MessageEvent> MessageEvents { get { return this.messageEvents;} } // association: calendar events private IList<CalendarEvent> calendarEvents = new List<CalendarEvent>(); public virtual IList<CalendarEvent> CalendarEvents { get { return this.calendarEvents;} } // association: alternatives private IList<OperationAlternative> operationAlternatives = new List<OperationAlternative>(); public virtual IList<OperationAlternative> OperationAlternatives { get { return this.operationAlternatives;} } // association: allowedWorkplaces private IList<AllowedWorkplace> allowedWorkplaces = new List<AllowedWorkplace>(); public virtual IList<AllowedWorkplace> AllowedWorkplaces { get { return this.allowedWorkplaces;} } // association: operating resource public virtual Item OperatingResource { get; set; } // association: cycle time unit public virtual UnitOfMeasure CycleUoM { get; set; } // association: Workplace public virtual Workplace Workplace { get; set; } // association: work order public virtual WorkOrder WorkOrder { get; set; } }}This is the metadatasource part:
public void PrepareOperationAssociationConfigurations(MappingConfiguration<Operation> configuration) { configuration.HasAssociation(x => x.MaterialComponents).WithOpposite(x => x.Operation).HasConstraint((m, d)=>d.OperationId == m.Id).IsManaged().IsDependent(); configuration.HasAssociation(x => x.Transactions).WithOpposite(x => x.Operation).HasConstraint((m, d)=>d.OperationId == m.Id).IsManaged().IsDependent(); configuration.HasAssociation(x => x.MessageEvents).WithOpposite(x => x.Operation).HasConstraint((m, d)=>d.OperationId == m.Id).IsManaged().IsDependent(); configuration.HasAssociation(x => x.CalendarEvents).WithOpposite(x => x.Operation).HasConstraint((m, d)=>d.OperationId == m.Id).IsManaged().IsDependent(); configuration.HasAssociation(x => x.OperationAlternatives).HasConstraint((d, m)=>d.WorkOrderId == m.WorkOrderId && d.SequenceNumber==m.SequenceNumber); configuration.HasAssociation(x => x.AllowedWorkplaces).HasConstraint((d, m)=>d.WorkOrderId == m.WorkOrderId && d.SequenceNumber==m.SequenceNumber); configuration.HasAssociation(x => x.OperatingResource).WithOpposite(x => x.OperationsAsOpRes).HasConstraint((d, m)=>d.OperatingResourceId == m.Id); configuration.HasAssociation(x => x.CycleUoM).WithOpposite(x => x.Operations).HasConstraint((d, m)=>d.CycleTimeUoM == m.Id).IsManaged(); configuration.HasAssociation(x => x.Workplace).WithOpposite(x => x.Operations).HasConstraint((d, m)=>d.WorkplaceId == m.Id); configuration.HasAssociation(x => x.WorkOrder).WithOpposite(x => x.Operations).HasConstraint((d, m)=>d.WorkOrderId == m.Id).IsManaged();}
Starting the application I getthis error message:
The field 'Operation_operationAlternatives' of class 'idee5.Dispatcher.Model.DAL.OperationAlternative' references a primary key field '<WorkOrderId>k__BackingField' of class 'idee5.Dispatcher.Model.DAL.Operation' that could not be found. --> DispatcherEntities/namespace[idee5.Dispatcher.Model.DAL]/class[Operation]/field[operationAlternatives]/collection/inverse="{auto}"/db-ref="<WorkOrderId>k__BackingField"
Any ideas what I did wrong?
Kind regards
Bernd