Chapter 26. Using Entities in Layered Client-Side Applications
In previous chapters, you have built client applications whose
controls were bound directly to
EntityObjects managed by an
ObjectContext, an approach favored in Rapid
Application Design (RAD). While this may be a reasonable approach for
small applications, when it’s time to architect enterprise applications
this tightly bound design falls apart fairly quickly.
When you build large applications, it is prudent to separate your logic so that the UI is responsible for UI tasks (e.g., responding to user actions), business logic is handled by business classes, and data access is handled by classes designed specifically for data access.
A client-side application such as Windows Forms or WPF does come with the benefit of letting you use a long-running context to manage the entities while the user is working on them. This is different from disconnected client applications that consume services, whether that it a Silverlight application or even a disconnected Windows Forms or WPF application. The client-side applications this chapter focuses on are those which are not running in a disconnected environment.
In Chapter 24, you learned how to create persistent ignorant entities and use a repository to allow the UI to be completely ignorant of the Entity Framework. You could certainly use these repositories in client applications, but in this chapter I won’t be concerned with keeping Entity Framework out of the client. Instead, we’ll ...