J'ai la conception CodeFirst comme ceci:clé étrangère avec la logique OU
public class Email
{
public string Address { get; set; }
public Company Company { get; set; }
public int? CompanyId { get; set; }
public User User { get; set; }
public int? UserId { get; set; }
//many other props
}
public class Company
{
public List<Email> Emails { get; set; }
}
public class User
{
public List<Email> Emails { get; set; }
}
Dans une bonne façon, le courriel peut appartenir à une seule clé étrangère: COMPANYID ou UserId. Mais maintenant, il permet CompanyId et UserId. C'est faux. Quoi qu'il en soit, ce design avec nullables est moche. Par exemple, pour obtenir tous les e-mails liés aux entreprises que je dois faire:
var companyEmails = _context.Emails.Where(x => x.CompanyId.HasValue);
Je pense qu'il ya une meilleure approche pour définir les clés étrangères se multiplient avec OU logique. S'il vous plaît, aidez-moi à trouver un moyen.
Merci beaucoup! btw il y a un [bon tutoriel pour les stratégies d'héritage] (http://www.entityframeworktutorial.net/code-first/inheritance-strategy-in-code-first.aspx) –