2010-10-27 4 views
1

Je traite d'abord le code .NET 4 et j'ai des problèmes avec une relation 1 à 1.Basé sur une contrainte déclarée, la propriété de navigation est requise.

breifing base de données: -POccurrence -Id

-POccurrenceRiskAssessment -OccurrenceId

dans ma classe Poccurrence J'ai une propriété nommée RiskAsessment, du POccurrenceRiskAssessment type. Tous les POccurrences n'ont pas d'évaluation des risques, il doit donc être nullable. J'ai essayé

modelBuilder.Entity<POccurrence>().HasOptional(item => item.RiskAssessment).HasConstraint((o, r) => r.OccurrenceId == o.Id); 

mais qui me donne

La propriété de navigation 'RiskAssessment' a déclaré le type 'AM.Pris.Classes.POccurrence' a été configuré en option. Basé sur une contrainte déclarée , la propriété de navigation est requise. Soit rendre nulle la propriété de clé dépendant ou configurer la navigation comme requis.

et si je tente

modelBuilder.Entity<POccurrence>().HasRequired(item => item.RiskAssessment).HasConstraint((o, r) => r.OccurrenceId == o.Id); 

i me

Une contrainte d'intégrité référentielle violation a été commise: Une clé primaire propriété qui est une partie de contrainte référentielle d'intégrité ne peut pas être changé lorsque l'objet dépendant est Inchangé sauf s'il est défini sur l'objet principal de la sociation. L'objet principal doit être suivi et non marqué pour la suppression.

et je n'ai aucune idée de ce qu'il faut faire. J'ai même essayé de supprimer la relation réelle dans la BD mais rien ne semble faire de différence. Une idée? Je suppose que c'est le premier essai avec HasOptional que je cherche, mais comment puis-je le rendre nullalbe?

Répondre

0

Avez-vous envisagé de le déployer dans un scénario d'héritage Table par type où POccurrenceRiskAssessment: POccurrence? De cette façon, vous n'avez besoin que de la requête POccurrenceRiskAssessment.