How to find unmapped properties in a NHibernate mapped class?

Posted by haarrrgh on Stack Overflow See other posts from Stack Overflow or by haarrrgh
Published on 2010-06-01T11:12:04Z Indexed on 2010/06/01 11:13 UTC
Read the original article Hit count: 178

I just had a NHibernate related problem where I forgot to map one property of a class.

A very simplified example:

public class MyClass
{
    public virtual int ID { get; set; }
    public virtual string SomeText { get; set; }
    public virtual int SomeNumber { get; set; }
}

...and the mapping file:

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="MyAssembly"
                   namespace="MyAssembly.MyNamespace">

    <class name="MyClass" table="SomeTable">
        <property name="ID" />
        <property name="SomeText" />      
    </class>

</hibernate-mapping>

In this simple example, you can see the problem at once:
there is a property named "SomeNumber" in the class, but not in the mapping file.
So NHibernate will not map it and it will always be zero.

The real class had a lot more properties, so the problem was not as easy to see and it took me quite some time to figure out why SomeNumber always returned zero even though I was 100% sure that the value in the database was != zero.

So, here is my question:

Is there some simple way to find this out via NHibernate?
Like a compiler warning when a class is mapped, but some of its properties are not.
Or some query that I can run that shows me unmapped properties in mapped classes...you get the idea.

(Plus, it would be nice if I could exclude some legacy columns that I really don't want mapped.)

© Stack Overflow or respective owner

Related posts about nhibernate

Related posts about nhibernate-mapping