2009-08-19 7 views
1

J'ai un système hérité où la relation entre 2 tables n'a pas été définie explicitement et il n'y a pas de clés (primaires ou définies). Les seules colonnes connexes est « Nom d'utilisateur »Fluid nHibernate: Comment mapper 2 tables sans clé primaire

Quelque chose comme:

Table: Customer 
Column: Id, 
Column: Username, 
Column: FirstName, 

Table: Customer_NEW 
Column: Username 
Column: FirstNameNew 

Je définitions suivantes de cartographie:

public sealed class CustomerMap : ClassMap<Customer>, IMap 
{ 
    public CustomerMap() 
    { 
     WithTable("customers"); 
     Not.LazyLoad(); 
     Id(x => x.Id).GeneratedBy.Increment(); 
     References(x => x.CustomerNew, "Username") 
      .WithForeignKey("Username") 
      .Cascade.All(); 

} 

    public sealed class CustomerNewMap : ClassMap<CustomerNew>, IMap 
    { 
    public CustomerNewMap() 
    { 
     WithTable("customers_NEW"); 
     Not.LazyLoad(); 
     Id(x => x.Username).GeneratedBy.Assigned(); 
     Map(x => x.FirstNameNew); 
    } 
    } 

Le problème est NHibernate génère une instruction UPDATE pour la « référence » dans la définition de mappage de client qui échoue de toute évidence lors de la tentative d'insertion d'un nouvel objet Customer ayant une référence à l'objet CustomerNew.

Comment puis-je obtenir la définition de mappage pour générer l'instruction INSERT au lieu d'une UPDATE pour la commande 'Save'?

Vive à l'avance

Ollie

Répondre

0

La raison en est parce qu'il n'y a pas d'intégrité référentielle dans la base de données, pas de clés primaires, clés composites pas les clés étrangères ...

Encore une fois, une autre application qui a une base de données qui n'est pas adaptée à l'usage ...

Questions connexes