1. BDC does not
support structs that are not simple types. Using
non-primitive structs will cause data loss and
inconsistencies. Do not use non-primitive structs.
2.
BDC
does not support nested collections (for example, array of arrays or
collections, where the elements of which are also collections). You can have
these types, but you cannot model these types as collections. One of the levels
must be modeled as a structure with the IsCollection="false" workaround.
3.
BDC
does not support multidimensional arrays.
4.
BDC
does not support dynamic programming introduced in .NET Framework 4. BDC works
only with .NET Framework 3.5. However, you can use the DynamicType
class, which works in a similar way.
5.
BDC
does not support the ICollection or IEnumerable interfaces to represent collections in data
structures, as well as the generic ICollection<T>, IEnumerable<T>, and IList<T> interfaces. All collections must implement IList. This applies to data structures in input and inout
parameters, and fields of external items. For the return types of method
instances, such as a Finder returning multiple items,
we require the return value to implement either IEnumerable
or IEnumerator (except for database, where we support onlyIDataReader). BDC does not support generic versions of
these IEnumerable<T> and IEnumerator<T>. So for example, for a Web service or
.NET assembly, the Finder method can return an
enumerator that contains customer objects; however, the customer object cannot
contain an enumerable of addresses to represent the list of addresses. Also for
the restrictions mentioned in this paragraph, "BDC does not support"
means: It will not work if you implement only the not supported interfaces;
however, it will work if you implement these not supported interfaces and the
ones that BDC requires.