2009-08-19 3 views
1

Ich habe ein Altsystem, bei dem die Beziehung zwischen 2 Tabellen nicht explizit definiert wurde und keine Schlüssel (Primär oder Nicht definiert) vorhanden sind. Die einzigen verwandten Spalten 'Benutzername'Fluent nHibernate: Wie man 2 Tabellen ohne definierte Primärschlüssel abbildet

Etwas wie:

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

Table: Customer_NEW 
Column: Username 
Column: FirstNameNew 

Ich habe folgende Mapping-Definitionen:

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); 
    } 
    } 

Das Problem wird nHibernate wird eine Update-Anweisung für die 'Referenz' Erzeugen die Kundenzuordnungsdefinition, die offensichtlich fehlschlägt, wenn versucht wird, ein neues Customer-Objekt einzufügen, das einen Verweis auf CustomerNew-Objekt hat.

Wie bekomme ich die Mapping-Definition zum Generieren der INSERT-Anweisung anstelle eines UPDATE für den Befehl 'Speichern'?

Prost im Voraus

Ollie

Antwort

0

Der Grund ist, weil es in der Datenbank keine Primärschlüssel, zusammengesetzte Schlüssel nicht für Fremdschlüssel ...

Wieder einmal eine andere Anwendung keine referentielle Integrität das hat eine Datenbank, die nicht für den Zweck geeignet ist ...