IEnumerable <object> GetSamples(string language, string connectionString, MappingSource mappingSource, TextWriter log) { string projectDir = Path.Combine(this.solutionPath, "samples." + language); string projectFile = Directory.GetFiles(projectDir, String.Format("*.{0}proj", language)).FirstOrDefault(); if (projectFile == null) { throw new InvalidOperationException("Project file not found."); } string projectFileName = projectFile.Split(Path.DirectorySeparatorChar).Last(); string assemblyFileName = String.Join(".", projectFileName.Split('.').Reverse().Skip(1).Reverse()) + ".dll"; string assemblyPath = Path.Combine(projectDir, "bin", "Debug", assemblyFileName); Assembly samplesAssembly = Assembly.Load(File.ReadAllBytes(assemblyPath)); MetaModel mapping; if (mappingSource is AttributeMappingSource) { mapping = mappingSource.GetModel( samplesAssembly.GetTypes() .Where(t => typeof(Database).IsAssignableFrom(t)) .Single() ); } else { mapping = mappingSource.GetModel( samplesAssembly.GetTypes() .Where(t => typeof(System.Data.Linq.DataContext).IsAssignableFrom(t)) .Single() ); } return (from t in samplesAssembly.GetTypes() where t.IsPublic && t.Name.EndsWith("Samples") let parameters = t.GetConstructors().First().GetParameters() let args = from p in parameters select(p.ParameterType == typeof(string)?connectionString : p.ParameterType == typeof(TextWriter)?log : p.ParameterType == typeof(MetaModel)?mapping : p.ParameterType == typeof(DbConnection)?Database.CreateConnection(connectionString) : p.ParameterType.IsValueType?Activator.CreateInstance(p.ParameterType) : null) select Activator.CreateInstance(t, args.ToArray())); }
private void Init(object connection, MappingSource mapping) { _perInstanceProviderMode = DataContext.ProviderMode; MetaModel model = mapping.GetModel(this.GetType()); this._services = new CommonDataServices(this, model); this._conflicts = new ChangeConflictCollection(); // determine provider Type providerType; if (model.ProviderType != null) { providerType = model.ProviderType; } else { throw Error.ProviderTypeNull(); } if (!typeof(IProvider).IsAssignableFrom(providerType)) { throw Error.ProviderDoesNotImplementRequiredInterface(providerType, typeof(IProvider)); } this._provider = (IProvider)Activator.CreateInstance(providerType); SetProviderMode(); this._provider.Initialize(this._services, connection); this._tables = new Dictionary <MetaTable, ITable>(); this.InitTables(this); }
private void Init(object connection, MappingSource mapping) { var model = mapping.GetModel(GetType()); services = new CommonDataServices(this, model); conflicts = new ChangeConflictCollection(); // determine provider if (model.ProviderType == null) { throw Error.ProviderTypeNull(); } var providerType = model.ProviderType; if (!typeof(IProvider).IsAssignableFrom(providerType)) { throw Error.ProviderDoesNotImplementRequiredInterface(providerType, typeof(IProvider)); } provider = (IProvider)Activator.CreateInstance(providerType); provider.Initialize(services, connection); tables = new Dictionary <MetaTable, ITable>(); InitTables(this); }
private void Init(object connection, MappingSource mapping) { //if (mapping is DynamicMappingSource == false) // mapping = new DynamicMappingSource(mapping); MetaModel model = mapping.GetModel(GetType()); if (providerType == null) { providerType = model.ProviderType; } if (providerType == null) { throw Error.ProviderTypeNull(); } //try //{ // LicenseManager.Validate(providerType, this); //} //catch (Exception exc) //{ // throw exc; //} services = new CommonDataServices(this, model); conflicts = new ChangeConflictCollection(); extendTableTypes = new ExtendTableTypes(); if (!typeof(IProvider).IsAssignableFrom(providerType)) { throw Error.ProviderDoesNotImplementRequiredInterface(providerType, typeof(IProvider)); } var p = (SqlProvider)Activator.CreateInstance(providerType); Provider = p; Provider.Initialize(services, connection); tables = new Dictionary <MetaTable, ITable>(); }