J'utilise ConfORM Nhibernate dans l'un de mes projets MVC. Et a eu un problème avec One to Many Mappings.ConfORM Nhibernate OneToManyKeyColumnApplier Problème
IEnumerable<Type> domainEntities = this.GetDomainEntities();
var relationalMapper = new ObjectRelationalMapper();
relationalMapper.TablePerConcreteClass(domainEntities);
relationalMapper.Patterns.PoidStrategies.Add(new NativePoidPattern());
relationalMapper.Cascade<Category, Product>(Cascade.All);
relationalMapper.ManyToMany<Category, Product>();
relationalMapper.Cascade<Order, Product>(Cascade.Persist);
var mapper = new Mapper(relationalMapper);
var englishInflector = new EnglishInflector();
mapper.PatternsAppliers.Merge(new ClassPluralizedTableApplier(englishInflector));
mapper.PatternsAppliers.Merge(new OneToManyKeyColumnApplier(relationalMapper));
.....
HbmMapping mapping = mapper.CompileMappingFor(domainEntities);
Et les classes Ordre et utilisateur: un utilisateur avait plusieurs commandes.
public class Order : BaseEntity
{
public Order(User user)
{
if (user == null)
{
throw new ArgumentNullException("user");
}
this.User = user;
}
protected Order()
{
}
public virtual User User { get; protected set; }
}
Et les utilisateurs:
public class User : BaseEntity
{
public User()
{
this.Orders = new HashedSet<Order>();
}
public virtual string FirstName { get; set; }
public virtual ISet<Order> Orders { get; protected set; }
}
j'attends des relations comme ceci: Orders.UserId -> User.Id dans le DB. Mais quand le Nhibernate avait genereted DB nous avons eu ce problème (voir image):
UPS. Double référence Utilisateur et UserId soudainement surlignée. Et quand nous avons enlevé [utilisateur] Nhivernate ne peut pas faire de jointure interne de ces tables. C'est triste que le double temps: Nom de colonne invalide 'User'. Nom de colonne non valide "Utilisateur".
Je pense qu'il y a quelques problèmes avec la configuration de ConfORM. Si je supprime mapper.PatternsAppliers.Merge (new OneToManyKeyColumnApplier (relationalMapper)); ConfORM génère simplement la clé de référence [Utilisateur].
Quelqu'un sait quel est le problème ici? Merci d'avance.