2014-01-10 8 views
8

nicht beheben Ich erhalte Ausnahme NHibernate.QueryException: Konnte Eigenschaft nicht auflösen: InsuredId. Ich bin neu in NHibernate und ich konnte es nicht herausfinden.NHibernate Konnte Eigenschaft

definieren Eigenschaften

public virtual int InsuredId { get; set; } 
public virtual string Gender { get; set; } 
public virtual DateTime DateOfBirth { get; set; } 
public virtual string SrId { get; set; } 
public virtual string SchoolId { get; set; } 
public virtual string Ssn { get; set; } 
public virtual DateTime GradDate { get; set; } 

Mapping-Daten zu Eigenschaften

public InsuredMap() 
{ 
    ReadOnly(); 

    Table("Insured"); 
    Id(x => x.Id, "InsuredId"); 
    Map(x => x.Gender, "SexCd"); 
    Map(x => x.DateOfBirth, "BirthDt"); 
    Map(x => x.SrId, "SIDIdNum"); 
    Map(x => x.SchoolId, "SchoolIdTxt"); 
    Map(x => x.Ssn, "SocSecNumTxt"); 
    Map(x => x.GradDate, "GradMthYrNum"); 
} 

Funktion werden alle Werte Test-

public Entities.Insured GetByInsuredId(int insuredId) 
{ 
    var query = Session.QueryOver<Entities.Insured>() 
     .Where(x => x.InsuredId == insuredId) 
     .Cacheable() 
     .CacheRegion(Constants.EntityCacheRegion); 

    return query.SingleOrDefault(); 
} 

Einheit zu holen, die Daten zu prüfen

[Test] 
public void InsuredMapTest() 
{ 
    var insured = repository.GetByInsuredId(714619800); 
    Assert.That(insured.Gender, Is.EqualTo("F")); 
} 
+2

Es sieht so aus, als hätten Sie 'InsuredId' nicht zugeordnet, weshalb Sie die Ausnahme erhalten –

Antwort

10

Lassen Sie mich genauer sein und den Kommentar von Andrew Whitaker erweitern.

In der Abbildung Sie sagen:

Id(x => x.Id, "InsuredId"); 

Welche ist es, Informationen: Meine Einheit/Klasse Insured hat

Id(   // an identificator, the key 
x => x.Id  // represented by the property **Id** (here is the issue) 
, "InsuredId") // its DB representation is the column "InsuredId" 

Andere Wörter, die C# Eigenschaft

public virtual int InsuredId { get; set; } 

ist nicht abgebildet, mit dem oben genannten Zustand ment, was wir in der Abfrage tun, damit es nicht zur Abfrage

verwendet werden kann, um es

var query = Session.QueryOver<Entities.Insured>() 
    //.Where(x => x.InsuredId == insuredId) 
    .Where(x => x.Id == insuredId) 
    ... 

und Eigentum der konnte nicht lösen Arbeit zu machen: InsuredId Ausnahme verschwinden, weil wir Verwenden der zugeordneten Eigenschaft Id

+0

Was zur Frage führt, können Sie ein berechnetes Feld mit Fluent Nhibernate haben? – Jess

+0

Nicht ganz sicher, wonach Sie suchen, aber könnte [this] (http://stackoverflow.com/a/13966856/1679310) helfen? Wir haben 'Formel =" "Attribut in NHibernate ... –

+0

Mehr wie folgt: http://stackoverflow.com/questions/2386981/fluent-nhibernate-and-computed-properties – Jess