Disons que j'ai une classe de produit qui possède une propriété Catégorie.Pourquoi deux colonnes sont-elles créées pour une clé étrangère?
public class Product : Entity<int> // Base class defines the Id
{
public virtual ProductCategory Category { get; set; }
}
Le fichier de mappage est simple
public class ProductMap : ClassMap<Product>
{
public ProductMap()
{
Id(x => x.Id);
References(x => x.Category).Nullable();
}
}
Utiliser SchemaExport.Create
Cela a créé deux colonnes dans ma base de données, et ProductCategoryId
CategoryId
. Compte tenu de mes conventions, seulement CategoryId
devrait exister. Les deux sont nullables, mais seulement CategoryId
est utilisé. Quoi qu'il en soit, ProductCategoryId
est toujours nulle, et c'est la colonne avec la contrainte de clé étrangère sur elle.
Pourquoi est-ce? Je ne peux pas vraiment trouver de problèmes avec le code, autant que je peux dire que tout fonctionne bien en utilisant la colonne CategoryId. Je peux interroger/enregistrer/mettre à jour avec ou sans une catégorie. Je ne saurais même pas si l'autre colonne existait si je ne regardais pas dans la base de données, mais je n'aime pas avoir une colonne quand je ne sais pas à quoi elle sert. Y a-t-il une raison pour cela ou est-ce que quelque chose ne va pas dans la façon dont j'ai mappé une référence nullable?