With a complex DataModel structure, when interface is used, interface inheriting from other interface become a must. Unfortunately, this don't work with ObjectDataSource, as it only look at its level for properties, not in parent. Properties collecting should be done like this: var properties = typeof(IFoo).GetProperties().Union(typeof(IFoo) .GetInterfaces().SelectMany(t => t.GetProperties()));