2010-09-01 3 views
5

ich habe nur VIEWs in einer vorhandenen Datenbank und ich möchte sie mit FHN erhalten. Ich habe versucht, die Abbildung es die folgende Art und Weise:So ordnen Sie eine Ansicht ohne eindeutige Identifizierungsspalte mit Fluent Nhibernate

public class HhstMap : ClassMap<Hhst> 
{ 
    public HhstMap() 
    { 
     Table("HHST"); 

     ReadOnly(); 

     Id(); 

     Map(x => x.Hkz); 
     Map(x => x.Kapitel); 
     Map(x => x.Titel); 
     Map(x => x.Apl); 
     Map(x => x.Hhpz); 
    } 
} 

, aber ich habe einen Fehler: konnte nicht ausführen Abfrage [SELECT this_.id als id3_0_, this_.Hkz als Hkz3_0_, this_.Kapitel als Kapitel3_0_, this_.Titel wie Titel3_0_, this_.Apl als Apl3_0_, this_.Hhpz als Hhpz3_0_ FROM HHST this_]

Das ist ok, weil es keine ID-Spalte gibt, aber wie kann ich mit Fluent ohne die ID mappen?

Antwort

7

Sie könnten die Datensätze als Wertobjekte (nicht verwaltete Entitäten) anstelle von Entitäten abrufen.

„14.1.5 Rückkehr nicht-verwalteten Einheiten Es ist möglich, ein IResultTransformer zu nativen SQL-Abfragen über die spezifischen nicht-verwalteten Einheiten auf zB Rück

sess.CreateSQLQuery("SELECT NAME, BIRTHDATE FROM CATS") 
    .SetResultTransformer(Transformers.AliasToBean(typeof(CatDTO))) 

Diese Abfrage angegeben:... die SQL-Abfragezeichenfolge ein Ergebnis Transformator

Die obige Abfrage einer Liste von CatDTO zurückkehren wird, die instantiiert worden ist, und die Werte von injizierten NAME und BIRTHNAME in seine coR Antworten auf Eigenschaften oder Felder "

+0

sollte ich CompositeID in meinem Mapping verwenden mit deiner Lösung? – blindmeis

1

Vielleicht kann Ihnen das helfen: Fluent nHibernate no identity column in table…?

EDIT: Sie könnten auch eine composite id verwenden, oder vielleicht benötigen Sie die Fluent Nhibernate?

+0

es funktionierte nicht für mich. Alle Objekte mit dem gleichen Schlüssel sind tatsächlich Kopien der ersten, die von der DB abgerufen – blindmeis

+0

Ich fügte zwei zusätzliche Links, die Sie ausprobieren möchten. – Peter

Verwandte Themen