Hello,
I didn't find documentation on the using of the attribute lazyload of the <result> element. I tried to do this data map (file attached), but I couldn't retrieve data with lazy loading. Each time I got all the tree of objects. I used the iBatis.Net DataMapper 1.6.1. Thank you for your help.
<?xml version="1.0" encoding="utf-8" ?> <sqlMap xmlns="http://ibatis.apache.org/mapping" namespace="ecommerce"> <alias> <typeAlias alias="Customer" type="iBatisSample.Model.Customer, iBatisSample"/> <typeAlias alias="Order" type="iBatisSample.Model.Order, iBatisSample"/> <typeAlias alias="OrderLine" type="iBatisSample.Model.OrderLine, iBatisSample"/> <typeAlias alias="Item" type="iBatisSample.Model.Item, iBatisSample"/> </alias> <resultMaps> <resultMap id="CustomerMap" class="Customer"> <result property="_id" column="Id"/> <result property="_firstName" column="FirstName"/> <result property="_lastName" column="LastName"/> <result property="_orders" resultMapping="ecommerce.OrderMap" lazyLoad="true"/> </resultMap> <resultMap id="OrderMap" class="Order"> <result property="_id" column="Id"/> <result property="_orderLines" resultMapping="ecommerce.OrderLineMap" lazyLoad="true"/> </resultMap> <resultMap id="OrderLineMap" class="OrderLine"> <result property="_quantity" column="Quantity"/> <result property="_item" resultMapping="ecommerce.ItemMap" lazyLoad="true"/> </resultMap> <resultMap id="ItemMap" class="Item"> <result property="_id" column="Id"/> <result property="_name" column="Name"/> </resultMap> </resultMaps> <!-- .......................................................................................................... --> <statements> <!-- Table Customer only --> <sql id="LoadCustomerSelect"> SELECT C.Id, C.FirstName, C.LastName, O.Id, OL.Quantity, I.Id, I.Name FROM Customer C LEFT JOIN [Order] O ON C.Id = O.Id LEFT JOIN OrderLine OL ON O.Id = OL.Id LEFT JOIN Item I ON OL.Id = I.Id </sql> <select id="LoadCustomers" resultMap="CustomerMap"> <include refid="LoadCustomerSelect"/> </select> <select id="LoadCustomerById" parameterClass="int" resultMap="CustomerMap"> <include refid="LoadCustomerSelect"/> WHERE C.Id = #value# </select> <insert id="InsertCustomer" parameterClass="Customer"> INSERT INTO Customer (Id, FirstName, LastName) VALUES (#_id#, #_firstName#, #_lastName#) </insert> <update id="UpdateCustomer" parameterClass="Customer"> UPDATE Customer SET FirstName = #_firstName#, LastName = #_lastName# WHERE Id = #_id# </update> <delete id="DeleteCustomer" parameterClass="Customer"> DELETE FROM Customer WHERE Id = #_id# </delete> <!-- Table Customer only --> <select id="LoadCustomers1" resultMap="CustomerMap"> SELECT Id, FirstName, LastName FROM Customer </select> <select id="LoadCustomers2" resultMap="CustomerMap"> SELECT * FROM Customer </select> <select id="LoadCustomers3" resultClass="Customer"> SELECT * FROM Customer </select> </statements> </sqlMap>

