Okay so here it is.
After few hours of banging my head I was able to get this. All you need to do is create a PickerEntity instance and add it to the entities collection of pickerItem to set the values.
peClient = new PickerEntity();
peClient.DisplayText = item["Client"].ToString();
peClient.Key = item["dbo_x002e_Customer_ID"].ToString();
To read the value you again need to type cast ItemPicker.Entities to picker entity instance and use the Key , DisplayText or ExtendedData property to get the relevant values.
PickerEntity bdcEntity = (PickerEntity)YourEntityPickerId.Entities;
Just a few finding:
1. It would good to set the .IsResolved property while setting so that it can be fetched later using the .ResolvedEntities property of the ItemPicker
2. It is always a good idead to use .ResolvedEntities to fetch the data from ItemPicker as .Entities 's behaviour is unpredictable.
For more details, please read through:
Code blocks quoted above are taken from these posts . Hope this helps.