public CustomObjectDataSource(IEnumerable <IBusinessObject> businessObjects) : base() { this.businessObjects = businessObjects; IBusinessObject b = businessObjects.First(); businessObjectType = b.GetType(); TypeName = "Caisis.BOL.ObjectDataSourceAdapter`1[[" + businessObjectType.FullName + ",Caisis.BOL]],Caisis.BOL"; ObjectCreating += new ObjectDataSourceObjectEventHandler(CustomObjectDataSource_ObjectCreating); Inserting += new ObjectDataSourceMethodEventHandler(CustomObjectDataSource_Inserting); Updating += new ObjectDataSourceMethodEventHandler(CustomObjectDataSource_Updating); Updated += new ObjectDataSourceStatusEventHandler(CustomObjectDataSource_Updated); Deleting += new ObjectDataSourceMethodEventHandler(CustomObjectDataSource_Deleting); }
protected override void OnInit(EventArgs e) { base.OnInit(e); DataObjectType = BuildManager.GetType(DataObjectTypeName, true); // Make a generic type to give us a unique key to pass to the MetaModel API Type contextType = typeof(DummyContext <>).MakeGenericType(DataObjectType); // Set the context type and entity set name on ourselves. Note that in this scenario those // concept are somewhat artificial, since we don't have a real context. We can set the entity set name // to anything, but using the DataObjectType makes some Dynamic Data error messages clearer. ((IDynamicDataSource)this).ContextType = contextType; ((IDynamicDataSource)this).EntitySetName = DataObjectType.Name; MetaModel model = null; try { model = MetaModel.GetModel(contextType); } catch { var contextConfiguration = new ContextConfiguration() { MetadataProviderFactory = (type => new InMemoryMetadataTypeDescriptionProvider(type, new AssociatedMetadataTypeTypeDescriptionProvider(type))) }; var typeDescriptionProvider = contextConfiguration.MetadataProviderFactory(DataObjectType); var typeDescriptor = typeDescriptionProvider.GetTypeDescriptor(DataObjectType); model = new MetaModel(); model.RegisterContext( new SimpleModelProvider(contextType, DataObjectType, typeDescriptor), contextConfiguration); } Inserted += new ObjectDataSourceStatusEventHandler(DynamicObjectDataSource_Inserted); Updated += new ObjectDataSourceStatusEventHandler(DynamicObjectDataSource_Updated); }