ibatis-user-cs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gilles Bayon" <ibatis....@gmail.com>
Subject Re: Field names conflict with Property names when automapping
Date Thu, 13 Jul 2006 05:24:37 GMT
On 7/13/06, Clinton Begin <clinton.begin@gmail.com> wrote:
>
> Hi guys,
>
> Are you aware that field names conflict with property names when
> automapping columns?  So a class written like:
>
>     public class Customer
>     {
>         private int id;
>
>         public int ID
>         {
>             get { return id; }
>             set { id = value; }
>         }
>     }
>
>
> ... will cause iBATIS.NET <http://ibatis.net/> to fail with:
>
> CustomerRepositoryTest.ShouldGetCustomerByID :
> IBatisNet.DataMapper.Exceptions.DataMapperException : Error automapping
> columns. Cause: Item has already been added. Key in dictionary: 'ID'  Key
> being added: 'ID'
>   ----> System.ArgumentException : Item has already been added. Key in
> dictionary: 'ID'  Key being added: 'ID'
>
> Seems like we're using the same map for fields and properties.  I suppose
> the solution is to not.  :-)
>

The MS .NET guidelance is to prefix private field with an underscore, this
will resolve the conflict name for now.

 I think we should probably have two maps, one for fields, one for
> properties and then make a decision like:  "properties always take
> precidence over fields if both exist" (favouring encapsulation).
>

I don't see thing like this, a property in a parameter map/result map is
only used to define a mapping of a property or a field not the two. The rule
is : the .net member name must permit to distinguish one from to other.
I think we can avoid make the decision like:  "properties always take
precedence over fields if both exist".
I will try to resolve this.

 Thoughts?
>
>
> Clinton
>

Mime
View raw message