Binding Entities to Form Controls

Binding Entities to Forms controls - easily done but not easily divined.

The naive would hook a LinQ query to the BindingSource's DataSource - and would be rewarded with a functional binding - most of the time.  In fact for read only lists of things this may be acceptable (adding/deleting objects causes inconsitencies in the ObjectManager).  One piece of advice I ran across is to not use this type of binding because every time the BindingSource moves to a different record it rexecutes the query (not confirmed by my testing but it may be true) which could be handy in a highly concurrent environment.

After much gnashing and googling I came across the "proper" way to do this (actually it's in book: "Programming Entity Framework" - O'Reilly"):

ObjectQuery<User> query;
...
query = ( from var in m_model.Users
          orderby var.sortorder, var.name
          select var
          ) as ObjectQuery<User>;
userBindingSource.DataSOurce = query;

As long as you cast the LinQ query to a ObjectQuery<T>, the BindingSource coordinates everything properly.

 

Typing: The query is run on the EntitySet while the ObjectQuery<T> is typed to the underlying object.