2014-06-06 2 views
1

En arrière-plan: j'ai hérité de la base de données. D'autres applications sont en cours d'exécution, donc je ne peux pas changer la structure. Nous avons une table des employés et une table des activités. Certains des employés sont des superviseurs et les activités peuvent éventuellement avoir un superviseur spécifié pour indiquer que seul ce superviseur particulier peut demander à ses employés de travailler pour cette activité particulière.Mappage facultatif à de nombreuses relations dans Entity Framework

La façon dont la base de données est configurée, un employé est un superviseur si le champ SupID n'est pas nul et c'est le champ auquel fait référence la colonne SupID dans Activity.

Voici un échantillon des classes avec lesquels je travaille:

public class Emp 
{ 
    public int EmpID { get; set; } 
    public string Fname { get; set; } 
    public string Lname { get; set; } 
    public int SupID { get; set; } 
    public virtual ICollection<Activity> SupervisedActivities { get; set; } 
} 

public class Activity 
{ 
    [Key] 
    public string ActNum { get; set; } 
    public int SupID { get; set; } 
    public virtual Emp Supervisor { get; set; } 
} 

Le problème que je vais avoir est que peu importe la façon dont je les relations entre mapper ces deux classes, EF veut relier la SupID sur Activité sur EmpID on Emp au lieu du SupID. Est-il possible de faire ce que j'essaie de faire dans EF sans modifier la base de données?

Répondre

0

Non, vous ne pouvez pas faire cela.

Jusqu'à EF6, il n'est pas possible d'établir une relation 1-à-plusieurs en utilisant un AK (touche de remplacement) du côté 1. Le côté 1 doit toujours être le PK dans la table parente.

MS a un site où vous pouvez voter pour de nouvelles fonctionnalités EF, ce qui est généralement l'un des meilleurs caractéristiques demandées: Unique Constraint (i.e. Candidate Key) Support

Vous pouvez vote for it here, si vous voulez.

Questions connexes