On 7/13/06, Clinton Begin <[EMAIL PROTECTED]> 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 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

Reply via email to