C# (CSharp) IdeaBlade.Drivers Namespace

Classes

Name Description
ConnectionDialog Interaction logic for ConnectionDialog.xaml
ConnectionProperties
DevForceLINQPadDriver A LINQPad driver for DevForce entity models. This driver is based on the UniversalStaticDriver sample from LINQPad. LINQPad will new a "context", your EntityManager, each time a query is run. It will also use (at least) one AppDomain per query tab. You'll sometimes see a new AppDomain has been created when you least expect it - so watch out. It' important to not lock the model assembly - one of the nice features of LINQPad is that you can change your model and rebuild without the assembly being locked, and LINQPad will also (eventually) refresh to show your model changes. This driver does not have any static references to DevForce assemblies - but it does use reflection to load them.
DevForceTypes This class provides access to DevForce types, objects, etc. using reflection and dynamic typing. LINQPad creates an AppDomain per query tab, but will (usually) reuse that AppDomain for other queries executed on that tab. So statics can be useful, at least when the same query tab is reused.
EntityMemberProvider Custom provider to ensure LINQPad doesn't follow navigation properties, or the EntityAspect/ComplexAspect.
SchemaHelper Uses reflection to obtain EntityQueries and stored proces defined on the EntityManager and returns the schema for returned data.
SqlLogger Utility class which will obtain the SQL for a query. DevForce does not generate SQL: it allows EF to do this, on the server, wwhen a DevForce query is reshaped as an ObjectQuery. Because of this, DevForce never really has the generated SQL, it must ask EF for it. To obtain the SQL here we're turning on a DevForce logging attribute, "ShouldLogSqlQueries", to allow SQL messages to be written by the DevForce trace publisher. We're then subscribing to the publisher and looking only for messages coming from a specific source. The publishing mechanism within DevForce runs on a separate thread, and pushes out all trace/debug messages. LINQPad needs the SQL for display purposes by the time the query has finished executing - which is a problem for us because the trace message may not have been published or received yet. To work around this, the driver will call here to pull the SQL message, with a short wait if necessary, instead of something more intuitive like using an event handler.