public DataSetModel(DatabaseInfo targetDatabase, IShellContext context, IDatabaseFactory factory) { _targetDatabase = targetDatabase; _context = context; _factory = factory; _dda = _factory.CreateDataAdapter(); }
public void GetCommands(DmlfBatch res, DatabaseInfo db, IDialectDataAdapter dda, ICdlValueConvertor converter) { var cmd = new DmlfInsert(); cmd.InsertTarget = TargetTable; var table = db.FindTable(TargetTable); if (table == null) return; var autoinc = table.FindAutoIncrementColumn(); bool isAutoInc = autoinc != null && Values.Any(x => x.Column == autoinc.Name); GetValues(cmd.Columns, Values, table, dda, converter); if (isAutoInc) { res.AllowIdentityInsert(table.FullName, true); } res.Commands.Add(cmd); if (isAutoInc) { res.AllowIdentityInsert(table.FullName, false); } }
private void setupDbCommand( DbCommand dbCmd, DatabaseInfo databaseInfo ) { dbCmd.CommandText = sproc; dbCmd.CommandType = CommandType.StoredProcedure; foreach( var p in parameters ) dbCmd.Parameters.Add( p.GetAdoDotNetParameter( databaseInfo ) ); }
public List<ChangeSetUpdateItem> GenerateCascadeUpdates(DatabaseInfo db) { var res = new List<ChangeSetUpdateItem>(); GenerateCascadeUpdates(db, res); res.Reverse(); return res; }
internal static void Generate( DBConnection cn, TextWriter writer, string baseNamespace, Database database, Configuration.SystemDevelopment.Database configuration) { if( configuration.queries == null ) return; info = cn.DatabaseInfo; writer.WriteLine( "namespace " + baseNamespace + "." + database.SecondaryDatabaseName + "Retrieval {" ); foreach( var query in configuration.queries ) { List<Column> columns; try { columns = validateQueryAndGetColumns( cn, query ); } catch( Exception e ) { throw new UserCorrectableException( "Column retrieval failed for the " + query.name + " query.", e ); } CodeGenerationStatics.AddSummaryDocComment( writer, "This object holds the values returned from a " + query.name + " query." ); writer.WriteLine( "public static partial class " + query.name + "Retrieval {" ); // Write nested classes. DataAccessStatics.WriteRowClasses( writer, columns, localWriter => { } ); writeCacheClass( writer, database, query ); writer.WriteLine( "private const string selectFromClause = @\"" + query.selectFromClause + " \";" ); foreach( var postSelectFromClause in query.postSelectFromClauses ) writeQueryMethod( writer, database, query, postSelectFromClause ); writer.WriteLine( "static partial void updateSingleRowCaches( Row row );" ); writer.WriteLine( "}" ); // class } writer.WriteLine( "}" ); // namespace }
private void GenerateCascadeUpdates(DatabaseInfo db, List<ChangeSetUpdateItem> res) { if (!IsUpdatingPk(db)) return; var table = db.FindTable(TargetTable); if (table == null) return; foreach (var fk in table.GetReferences()) { var newItem = new ChangeSetUpdateItem { LinkedInfo = LinkedInfo, TargetTable = fk.OwnerTable.FullName, }; newItem.Conditions.AddRange(GetPrefixedConditions(Conditions, fk.ConstraintName)); res.Add(newItem); for (int i = 0; i < fk.Columns.Count; i++) { string pkcol = fk.RefColumns[i].RefColumnName; var val = Values.FirstOrDefault(x => x.Column == pkcol); if (val == null) continue; newItem.Values.Add(new ChangeSetValue { Column = fk.Columns[i].RefColumnName, Value = val.Value, }); } } }
public RecreatedItem CloneForStructure(DatabaseInfo s) { var res = new RecreatedItem(); res.RecreatedObject = s.FindByGroupId(RecreatedObject.GroupId); if (NewVersion != null) res.NewVersion = NewVersion.CloneObject(null); return res; }
protected static bool GetCondition(DmlfCommandBase cmd, ChangeSetItem item, ChangeSetCondition cond, DatabaseInfo db) { var source = new DmlfSource { Alias = "basetbl", LinkedInfo = item.LinkedInfo, TableOrView = item.TargetTable, }; var colref = cmd.SingleFrom.GetColumnRef(source, item.TargetTable, StructuredIdentifier.Parse(cond.Column), db, DmlfJoinType.Inner); if (colref == null) return false; //var table = db.FindTable(item.TargetTable); //if (table == null) return false; //var column = table.FindColumn(cond.Column); //if (column == null) return false; var colexpr = new DmlfColumnRefExpression { Column = colref }; var column = colref.FindSourceColumn(db); cmd.AddAndCondition(FilterParser.FilterParser.ParseFilterExpression(column != null ? column.CommonType : new DbTypeString(), colexpr, cond.Expression)); return true; }
public ValueContainer( string name, Type dataType, string dbTypeString, int size, bool allowsNull, DatabaseInfo databaseInfo ) { this.name = name; pascalCasedName = databaseInfo is OracleInfo ? name.OracleToEnglish().EnglishToPascal() : name; pascalCasedNameExceptForOracle = databaseInfo is OracleInfo ? name : pascalCasedName; unconvertedDataType = dataType; this.dbTypeString = dbTypeString; nullValueExpression = databaseInfo is OracleInfo && new[] { "Clob", "NClob" }.Contains( dbTypeString ) ? "\"\"" : ""; this.size = size; // MySQL LONGTEXT returns zero for size. if( databaseInfo is MySqlInfo && dbTypeString == "Text" && size == 0 ) this.size = int.MaxValue; if( databaseInfo is MySqlInfo && dbTypeString == "Bit" && this.size == 1 ) { if( unconvertedDataType != typeof( ulong ) ) throw new ApplicationException( "The unconverted data type was not ulong." ); this.dataType = typeof( bool ); incomingValueConversionExpressionGetter = valueExpression => "System.Convert.ToBoolean( {0} )".FormatWith( valueExpression ); incomingValueConverter = value => Convert.ToBoolean( value ); outgoingValueConversionExpressionGetter = valueExpression => "System.Convert.ToUInt64( {0} )".FormatWith( valueExpression ); } else { this.dataType = unconvertedDataType; incomingValueConversionExpressionGetter = valueExpression => "({0}){1}".FormatWith( dataType.ToString(), valueExpression ); incomingValueConverter = value => value; outgoingValueConversionExpressionGetter = valueExpression => valueExpression; } this.allowsNull = allowsNull; }
static DatabaseInfoKeeper() { var databaseName = WebConfigurationManager.AppSettings["DatabaseName"]; var filePath = string.Format("{0}{1}.sqlite", HostingEnvironment.ApplicationPhysicalPath, databaseName); var connectionString = string.Format("Data Source={0};Version=3;", filePath); Main = new DatabaseInfo(databaseName, filePath, connectionString); }
public bool IsUpdatingPk(DatabaseInfo db) { var table = db.FindTable(TargetTable); if (table == null) return false; if (table.PrimaryKey == null) return false; return Values.Any(x => table.PrimaryKey.Columns.Any(y => System.String.Compare(x.Column, y.RefColumnName, System.StringComparison.OrdinalIgnoreCase) == 0)); }
protected static bool GetConditions(DmlfCommandBase cmd, ChangeSetItem item, List<ChangeSetCondition> conditions, DatabaseInfo db) { foreach (var cond in conditions) { if (!GetCondition(cmd, item, cond, db)) return false; } return true; }
public AlterOperation CloneForStructure(DatabaseInfo s) { Type t = GetType(); var res = t.GetConstructor(new Type[] { }).Invoke(new object[] { }) as AlterOperation; res.AssignFrom(this); if (s != null) res.ChangeStructure(s); return res; }
//public void SaveToXml(XmlElement xml) //{ // foreach (var elem in Inserts) // { // elem.SaveToXml(xml.AddChild("Insert")); // } // foreach (var elem in Updates) // { // elem.SaveToXml(xml.AddChild("Update")); // } // foreach (var elem in Deletes) // { // elem.SaveToXml(xml.AddChild("Delete")); // } //} //private void DumpTarget(ISqlDumper dmp, ChangeSetItem item) //{ // string linkedInfoStr = item.LinkedInfo != null ? item.LinkedInfo.ToString() : ""; // dmp.Put("%s%f", linkedInfoStr, item.TargetTable); //} //private void DumpWhere(ISqlDumper dmp, ChangeSetItem item, List<ChangeSetCondition> conditions, DatabaseInfo db) //{ // dmp.Put("^ where "); // bool wasCond = false; // foreach(var cond in conditions) // { // if (wasCond) dmp.Put(" ^and "); // wasCond = true; // DumpCondition(dmp, item, cond, db); // } //} public DmlfBatch GetCommands(DatabaseInfo db, IDatabaseFactory factory) { var disableFks = new HashSet<Tuple<NameWithSchema, string>>(); var dda = factory.CreateDataAdapter(); var converter = new CdlValueConvertor(new DataFormatSettings()); foreach (var upd in Updates) { if (upd.DisableReferencedForeignKeys || upd.UpdateReferences || DisableReferencedForeignKeys || UpdateReferences) { var table = db.FindTable(upd.TargetTable); if (table == null) continue; foreach (var fk in table.GetReferences()) { disableFks.Add(Tuple.Create(fk.OwnerTable.FullName, fk.ConstraintName)); } } } var res = new DmlfBatch(); foreach (var fk in disableFks) res.DisableConstraint(fk.Item1, fk.Item2, true); foreach (var ins in Inserts) { ins.GetCommands(res, db, dda, converter); } foreach (var upd in Updates) { upd.GetInsertCommands(res, db, this, dda, converter); } foreach (var upd in Updates) { upd.GetCommands(res, db, this, dda, converter); } foreach (var upd in Updates) { upd.GetDeleteCommands(res, db, this); } foreach (var del in Deletes) { del.GetCommands(res, db, this); } foreach (var fk in disableFks) res.DisableConstraint(fk.Item1, fk.Item2, false); res.Commands.ForEach(x => { var cmd = x as DmlfCommandBase; if (cmd != null) cmd.SimplifyFromAliases(); }); return res; }
public bool IsDuplicatingIdentity(DatabaseInfo db, ChangeSetModel model) { if (!UpdateReferences && !model.UpdateReferences) return false; if (!IsUpdatingPk(db)) return false; var table = db.FindTable(TargetTable); if (table == null) return false; var autoinc = table.FindAutoIncrementColumn(); return autoinc != null && Values.Any(x => x.Column == autoinc.Name); }
public void FullAnalysis() { CheckInput(); if (Structure != null) throw new Exception("DBSH-00126 Structure must not be filled"); if (ChangeSet != null) throw new Exception("DBSH-00127 ChangeSet must not be filled"); Structure = new DatabaseInfo(); if (FilterOptions == null) FilterOptions = new DatabaseAnalyserFilterOptions(); DoRunAnalysis(); SortStructureItems(); }
void InlineDbCommandCondition.AddToCommand( IDbCommand command, DatabaseInfo databaseInfo, string parameterName ) { var parameter = columnValue.GetParameter( name: parameterName ); if( parameter.ValueIsNull ) command.CommandText += columnValue.ColumnName + " IS NULL"; else { command.CommandText += columnValue.ColumnName + " = " + parameter.GetNameForCommandText( databaseInfo ); command.Parameters.Add( parameter.GetAdoDotNetParameter( databaseInfo ) ); } }
private DmlfSource DoAddOrFindRelation(DmlfSource baseSource, NameWithSchema baseTable, StructuredIdentifier relationJoined, StructuredIdentifier relationToJoin, DatabaseInfo db, DmlfJoinType joinType) { if (relationToJoin.IsEmpty) return baseSource; string relName = relationToJoin.First; string alias = String.Format("_REF{0}_{1}", relationJoined.NameItems.Select(x => "_" + x).CreateDelimitedText(""), relName); var source = FindSourceByAlias(alias); if (source == null) { var baseTableInfo = db.FindTable(baseTable); var fk = baseTableInfo.ForeignKeys.FirstOrDefault(x => System.String.Compare(x.ConstraintName, relName, StringComparison.OrdinalIgnoreCase) == 0); if (fk == null) { var column = baseTableInfo.FindColumn(relName); if (column != null) fk = column.GetForeignKeys().FirstOrDefault(x => x.Columns.Count == 1); } if (fk == null) return null; source = new DmlfSource { TableOrView = fk.RefTableFullName, Alias = alias, }; var relation = new DmlfRelation { Reference = source, JoinType = joinType, }; for (int i = 0; i < fk.Columns.Count; i++) { relation.Conditions.Add(new DmlfEqualCondition { LeftExpr = new DmlfColumnRefExpression { Column = new DmlfColumnRef { ColumnName = fk.Columns[0].RefColumnName, Source = baseSource, } }, RightExpr = new DmlfColumnRefExpression { Column = new DmlfColumnRef { ColumnName = fk.RefColumns[0].RefColumnName, Source = source, } }, }); Relations.Add(relation); } } if (relationToJoin.IsEmpty) return source; return DoAddOrFindRelation(source, source.TableOrView, relationJoined/relationToJoin.First, relationToJoin.WithoutFirst, db, joinType); }
/// <summary> /// Given a string, returns all instances of @abc in an ordered set containing abc (the token without the @ sign). If a token is used more than once, it /// only appears in the list once. A different prefix may be used for certain databases. /// </summary> internal static ListSet<string> GetNamedParamList( DatabaseInfo info, string statement ) { // We don't want to find parameters in quoted text. statement = statement.RemoveTextBetweenStrings( "'", "'" ).RemoveTextBetweenStrings( "\"", "\"" ); var parameters = new ListSet<string>(); foreach( Match match in Regex.Matches( statement, getParamRegex( info ) ) ) parameters.Add( match.Value.Substring( 1 ) ); return parameters; }
public void AddCollectionNodes(DatabaseInfo db, TreeNode dbNode) { var database = Server.GetDatabase(db.Name); foreach(CollectionInfo collection in database.GetAllCollections()) { TreeNode colNode = new TreeNode(collection.Name, 2, 2); dbNode.Nodes.Add(colNode); } }
public DatabaseDiff(DatabaseInfo src, DatabaseInfo dst, DbDiffOptions options, IDatabaseFactory factory) { _factory = factory; _src = src.CloneDatabase(); _dst = dst.CloneDatabase(); _actions = new DbDiffAction(this); //m_actions = new DiffActionDatabase(this, m_src, m_dst); _options = options; RebuildGroupIdDictionary(); if (_src.GroupId != _dst.GroupId) CreatePairing(); CreateActions(); }
/// <summary> /// Generates the cascade deletions. /// </summary> /// <param name="db">The db.</param> /// <returns></returns> public List<ChangeSetDeleteItem> GenerateCascadeDeletions(DatabaseInfo db) { var res = new List<ChangeSetDeleteItem>(); DoGenerateCascadeDeletions(db, res); var dct = new Dictionary<NameWithSchema, DeleteWrapper>(); var queue = new List<DeleteWrapper>(); foreach (var item in res) { DeleteWrapper wrap; if (!dct.ContainsKey(item.TargetTable)) { wrap = new DeleteWrapper(); dct[item.TargetTable] = wrap; wrap.Table = db.FindTable(item.TargetTable); wrap.Refs = wrap.Table.GetReferences().Select(x => x.OwnerTable.FullName).ToList(); wrap.Refs.RemoveAll(x => x == wrap.Table.FullName); queue.Add(wrap); } else { wrap = dct[item.TargetTable]; } wrap.Items.Add(item); } queue.Reverse(); var resWrappers = new List<DeleteWrapper>(); while (queue.Any()) { DeleteWrapper selected = null; foreach (var wrap in queue) { if (wrap.Refs.All(x => resWrappers.Any(y => y.Table.FullName == x))) { selected = wrap; break; } } if (selected == null) { // omit partial ordering, if order is not possible selected = queue.First(); } queue.Remove(selected); resWrappers.Add(selected); } return resWrappers.SelectMany(x => x.Items).ToList(); }
/// <summary> /// Returns the ADO.NET parameter object for this parameter. The ADO.NET parameter object is created on the first call to this method. /// </summary> public DbParameter GetAdoDotNetParameter( DatabaseInfo databaseInfo ) { if( parameter != null ) return parameter; parameter = databaseInfo.CreateParameter(); // SQL Server requires the prefix here. Although Oracle requires it in the command text, it does not require it here and it's questionable whether it is // even allowed. We do not know whether MySQL requires it here, but the examples we've seen do include it. parameter.ParameterName = ( databaseInfo is OracleInfo ? "" : databaseInfo.ParameterPrefix ) + name; parameter.Value = value.Value ?? DBNull.Value; if( value.DbTypeString != null ) databaseInfo.SetParameterType( parameter, value.DbTypeString ); return parameter; }
internal static bool IsProvisioned(DatabaseInfo databaseInfo) { bool isProvisioned = false; try { using (var repository = Helpers.DataConnectionHelper.CreateRepository(databaseInfo)) { isProvisioned = repository.GetAllTableNamesForExclusion().Any( t => t == "scope_info" || t == "scope_config" || t == "schema_info"); } } catch {} return isProvisioned; }
private void AddDescription(string description, string parentName, string objectName, DatabaseInfo databaseInfo) { if (string.IsNullOrWhiteSpace(description)) return; using (IRepository repo = Helpers.DataConnectionHelper.CreateRepository(databaseInfo)) { CreateExtPropsTable(repo); string sql = string.Format(insertScript, (parentName == null ? "NULL" : "'" + parentName + "'"), (objectName == null ? "NULL" : "'" + objectName + "'"), description.Replace("'", "''")); repo.ExecuteSql(sql); } }
public void InsertNewDatabaseNode(DatabaseInfo databaseInfo) { XmlDocument document = new XmlDocument(); document.Load(Utilities.CONFIGURATION_LOCATION + "Databases.xml"); //Create the database node XmlNode databaseNode = document.CreateNode(XmlNodeType.Element, "Database", null); XmlAttribute databaseNameAttr = document.CreateAttribute("Name"); databaseNameAttr.InnerText = databaseInfo.DatabaseName.ToLower(); databaseNode.Attributes.Append(databaseNameAttr); //Create the Host node XmlNode hostNode = document.CreateElement("Host"); hostNode.InnerText = databaseInfo.Host; databaseNode.AppendChild(hostNode); //Create the User node XmlNode userNode = document.CreateElement("User"); userNode.InnerText = databaseInfo.User; databaseNode.AppendChild(userNode); //Create the Password Node XmlNode passwordNode = document.CreateElement("Password"); passwordNode.InnerText = EncryptionHelper.Encrypt(databaseInfo.Password); databaseNode.AppendChild(passwordNode); //Create the Backup Settings Node XmlNode backupSettingsNode = document.CreateNode(XmlNodeType.Element, "BackupSettings", null); //Create the Start Time Node XmlNode startTimeNode = document.CreateElement("StartTime"); startTimeNode.InnerText = databaseInfo.StartTime.ToString(); backupSettingsNode.AppendChild(startTimeNode); //Append backup Settings Node to database node databaseNode.AppendChild(backupSettingsNode); //Append the database node to the colections element Databases. document.DocumentElement.AppendChild(databaseNode); //Save the Databases file document.Save(Utilities.CONFIGURATION_LOCATION + "Databases.xml"); }
internal static void Generate( DBConnection cn, TextWriter writer, string baseNamespace, Database database, Configuration.SystemDevelopment.Database configuration) { info = cn.DatabaseInfo; if( configuration.customModifications != null ) { writer.WriteLine( "namespace " + baseNamespace + " {" ); testQueries( cn, configuration.customModifications ); CodeGenerationStatics.AddSummaryDocComment( writer, "Contains custom modification operations." ); writer.WriteLine( "public static class " + database.SecondaryDatabaseName + "CustomModifications {" ); foreach( var mod in configuration.customModifications ) writeMethod( writer, database, mod ); writer.WriteLine( "}" ); // class writer.WriteLine( "}" ); // namespace } }
public ColumnInfo FindOriginalColumn(DatabaseInfo db, NameWithSchema baseName) { string name = IsAliased ? BaseColumnName : Name; if (name == null) return null; // determine original table name TableInfo table = null; if (!String.IsNullOrEmpty(BaseTableName)) { table = db.FindTableLike(String.IsNullOrWhiteSpace(BaseSchemaName) ? null : BaseSchemaName, BaseTableName); } else { if (baseName != null) table = db.FindTableLike(baseName.Schema, baseName.Name); } if (table == null) return null; var tableCol = table.FindColumn(name); return tableCol; }
private Column( DataRow schemaTableRow, bool includeKeyInfo, DatabaseInfo databaseInfo ) { ordinal = (int)schemaTableRow[ "ColumnOrdinal" ]; // MySQL incorrectly uses one-based ordinals; see http://bugs.mysql.com/bug.php?id=61477. if( databaseInfo is MySqlInfo ) ordinal -= 1; valueContainer = new ValueContainer( (string)schemaTableRow[ "ColumnName" ], (Type)schemaTableRow[ "DataType" ], databaseInfo.GetDbTypeString( schemaTableRow[ "ProviderType" ] ), (int)schemaTableRow[ "ColumnSize" ], (bool)schemaTableRow[ "AllowDBNull" ], databaseInfo ); isIdentity = ( databaseInfo is SqlServerInfo && (bool)schemaTableRow[ "IsIdentity" ] ) || ( databaseInfo is MySqlInfo && (bool)schemaTableRow[ "IsAutoIncrement" ] ); isRowVersion = databaseInfo is SqlServerInfo && (bool)schemaTableRow[ "IsRowVersion" ]; if( includeKeyInfo ) isKey = (bool)schemaTableRow[ "IsKey" ]; }
private void DoGenerateCascadeDeletions(DatabaseInfo db, List<ChangeSetDeleteItem> res) { var table = db.FindTable(TargetTable); if (table == null) return; foreach (var fk in table.GetReferences()) { if (res.Any(x => x.TargetTable == fk.OwnerTable.FullName)) { // prevent cycling continue; } var newItem = new ChangeSetDeleteItem { LinkedInfo = LinkedInfo, TargetTable = fk.OwnerTable.FullName, }; newItem.Conditions.AddRange(GetPrefixedConditions(Conditions, fk.ConstraintName)); res.Add(newItem); newItem.DoGenerateCascadeDeletions(db, res); } }
public void SetUp() { _info = new CoreTestData().TestDatabase; _testDatabaseInfoEntityHash = _info.Hash; AddTestDataToDb(); }
public void TearDown() { RemoveTestDataFromDb(); _info = null; }
// Token: 0x060000DC RID: 220 RVA: 0x000056C8 File Offset: 0x000038C8 public override TimeBasedDatabaseDriver CreateDriver(ThrottleGovernor governor, DatabaseInfo databaseInfo, ITimeBasedAssistantType timeBasedAssistantType, PoisonMailboxControl poisonControl, PerformanceCountersPerDatabaseInstance databaseCounters) { return(new TimeBasedStoreDatabaseDriver(governor, databaseInfo, timeBasedAssistantType, poisonControl, databaseCounters)); }
// Token: 0x0600146B RID: 5227 RVA: 0x000760E0 File Offset: 0x000742E0 public ITimeBasedAssistant CreateInstance(DatabaseInfo databaseInfo) { InferenceDataCollectionAssistantType.tracer.TraceFunction((long)this.GetHashCode(), "InferenceDataCollectionAssistantType.CreateInstance"); return(new InferenceDataCollectionAssistant(databaseInfo, this.Name, this.NonLocalizedName, this.diagnosticLogger, this.collectionContext)); }
internal static Dictionary <string, DatabaseInfo> GetDataConnections(EFCorePowerToolsPackage package) { // http://www.mztools.com/articles/2007/MZ2007018.aspx Dictionary <string, DatabaseInfo> databaseList = new Dictionary <string, DatabaseInfo>(); var dataExplorerConnectionManager = package.GetService <IVsDataExplorerConnectionManager>(); Guid provider40 = new Guid(EFCorePowerTools.Shared.Resources.SqlCompact40Provider); Guid provider40Private = new Guid(EFCorePowerTools.Shared.Resources.SqlCompact40PrivateProvider); Guid providerSqLite = new Guid(EFCorePowerTools.Shared.Resources.SQLiteProvider); Guid providerSqlitePrivate = new Guid(EFCorePowerTools.Shared.Resources.SQLitePrivateProvider); Guid providerNpgsql = new Guid(Resources.NpgsqlProvider); Guid providerMysql = new Guid(Resources.MysqlVSProvider); bool isV40Installed = RepositoryHelper.IsV40Installed() && (DdexProviderIsInstalled(provider40) || DdexProviderIsInstalled(provider40Private)); if (dataExplorerConnectionManager != null) { foreach (var connection in dataExplorerConnectionManager.Connections.Values) { try { var sConnectionString = DataProtection.DecryptString(connection.EncryptedConnectionString); var info = new DatabaseInfo() { Caption = connection.DisplayName, FromServerExplorer = true, DatabaseType = DatabaseType.SQLCE35, ConnectionString = sConnectionString }; var objProviderGuid = connection.Provider; if ((objProviderGuid == provider40 && isV40Installed || objProviderGuid == provider40Private && isV40Installed) && !sConnectionString.Contains("Mobile Device")) { info.DatabaseType = DatabaseType.SQLCE40; } if (objProviderGuid == providerSqLite || objProviderGuid == providerSqlitePrivate) { info.DatabaseType = DatabaseType.SQLite; } if (objProviderGuid == new Guid(Resources.SqlServerDotNetProvider) || objProviderGuid == providerNpgsql) { info.DatabaseType = objProviderGuid == providerNpgsql ? DatabaseType.Npgsql : DatabaseType.SQLServer; } // This provider depends on https://dev.mysql.com/downloads/windows/visualstudio/ if (objProviderGuid == providerMysql) { info.DatabaseType = DatabaseType.Mysql; } if (info.DatabaseType != DatabaseType.SQLCE35 && !databaseList.ContainsKey(sConnectionString)) { databaseList.Add(sConnectionString, info); } } catch (KeyNotFoundException) { } catch (NullReferenceException) { } } } return(databaseList); }
// Token: 0x06001216 RID: 4630 RVA: 0x000680D7 File Offset: 0x000662D7 public ITimeBasedAssistant CreateInstance(DatabaseInfo databaseInfo) { return(new StoreUrgentMaintenanceAssistant(databaseInfo, this.Name, this.NonLocalizedName)); }
void Update() { doubleTapElapsedTime += Time.deltaTime; if (Input.GetMouseButtonDown(0)) { if (doubleTapElapsedTime < maxDoubleTapDelay) { showGear(); } doubleTapElapsedTime = 0.0f; } // main game loop if (state == 0) // state 0 is NOT idle for Mastercontroller. MasterController has no idle state { globalFader.setFadeValue(1.0f); //controlHub.uiController.hide (); loadData(); loadMoarData(); loadPlayerChosenDebates(); loadUserInfoData(); controlHub.networkAgent.initialize(controlHub.networkAgent.bootstrapData.socketServer, controlHub.networkAgent.bootstrapData.socketServerPort); state = 1; } if (state == 1) // start logo { controlHub.logoController.startLogoActivity(this); state = 2; } if (state == 2) { if (!isWaitingForTaskToComplete) { retrieveDebatesDB(); } } if (state == 3) // start main game { globalFader.fadeIn(); //state = 4; controlHub.gameController.startGame(this); state = 4; } if (state == 4) // wait for main game to finish { if (controlHub.gameController.playerGroup != -1) { //network_broadcast ("panelreport:$", controlHub.gameController.playerGroup); network_sendMessage("panelreport\n"); network_sendMessage("regionstatus\n"); network_sendMessage("labelstatus\n"); network_sendMessage("secretsreport\n"); state = 5; } if (!isWaitingForTaskToComplete) { state = 0; // loop back } } if (state == 5) // wait for main game to finish { if (!isWaitingForTaskToComplete) { state = 0; // loop back } } if (state == 200) { if (www.isDone) { dbinfo = JsonUtility.FromJson <DatabaseInfo> (www.text); if (dbinfo != null) { saveDebatesDB(); } state = 3; } } if (state2 == 1) { if (controlHub.gameController.resumeGameResult == 0) { //network_broadcast ("panelreport:$", controlHub.gameController.playerGroup); network_sendMessage("panelreport\n"); network_sendMessage("regionstatus\n"); network_sendMessage("labelstatus\n"); network_sendMessage("secretsreport\n"); state2 = 0; } } if (state == 666) { timer -= Time.deltaTime; if (timer < 0.0f) { controlHub.networkAgent.disconnect(); timer = 0.25f; state = 667; } } if (state == 667) { timer -= Time.deltaTime; if (timer < 0.0f) { SceneManager.LoadScene("Scenes/Loader"); } } }
// Token: 0x06000F86 RID: 3974 RVA: 0x0005C29C File Offset: 0x0005A49C public TopNAssistant(DatabaseInfo databaseInfo, LocalizedString name, string nonLocalizedName) : base(databaseInfo, name, nonLocalizedName) { }
// Token: 0x06000B45 RID: 2885 RVA: 0x000486E6 File Offset: 0x000468E6 public JunkEmailOptionsCommiterAssistant(DatabaseInfo databaseInfo, LocalizedString name, string nonLocalizedName) : base(databaseInfo, name, nonLocalizedName) { }
public DbSourceTarget(DatabaseInfo src, DatabaseInfo dst) { m_src = src; m_dst = dst; }
public static string GetName(this DatabaseInfo databaseInfo) { return(databaseInfo.Name.ToDatabaseName()); }
// Token: 0x06000B02 RID: 2818 RVA: 0x0004783E File Offset: 0x00045A3E public UMPartnerMessageAssistant(DatabaseInfo databaseInfo, LocalizedString name, string nonLocalizedName) : base(databaseInfo, name, nonLocalizedName) { }
public static IEnumerable <ReferenceInfo> ToReferenceInfo(this IEnumerable <ReferencesEntity> references, DatabaseInfo db) { return(references .SelectMany(reference => db.Tables .SelectMany(table => table.Columns) .Where(table => reference.IsMatch(table))) .GroupBy(column => column.Entity) .Select(group => new ReferenceInfo { Entity = group.Key, Columns = group.ToArray() })); }
private void WriteDatabaseInfo(string databaseName, BlittableJsonReaderObject dbRecordBlittable, TransactionOperationContext context, AbstractBlittableJsonTextWriter writer) { try { var online = ServerStore.DatabasesLandlord.DatabasesCache.TryGetValue(databaseName, out Task <DocumentDatabase> dbTask) && dbTask != null && dbTask.IsCompleted; // Check for exceptions if (dbTask != null && dbTask.IsFaulted) { var exception = dbTask.Exception.ExtractSingleInnerException(); WriteFaultedDatabaseInfo(databaseName, exception, context, writer); return; } var dbRecord = JsonDeserializationCluster.DatabaseRecord(dbRecordBlittable); var db = online ? dbTask.Result : null; var indexingStatus = db?.IndexStore?.Status ?? IndexRunningStatus.Running; // Looking for disabled indexing flag inside the database settings for offline database status if (dbRecord.Settings.TryGetValue(RavenConfiguration.GetKey(x => x.Indexing.Disabled), out var val) && bool.TryParse(val, out var indexingDisabled) && indexingDisabled) { indexingStatus = IndexRunningStatus.Disabled; } var disabled = dbRecord.Disabled; var topology = dbRecord.Topology; var clusterTopology = ServerStore.GetClusterTopology(context); clusterTopology.ReplaceCurrentNodeUrlWithClientRequestedNodeUrlIfNecessary(ServerStore, HttpContext); var studioEnvironment = StudioConfiguration.StudioEnvironment.None; if (dbRecord.Studio != null && !dbRecord.Studio.Disabled) { studioEnvironment = dbRecord.Studio.Environment; } var nodesTopology = new NodesTopology(); var statuses = ServerStore.GetNodesStatuses(); if (topology != null) { foreach (var member in topology.Members) { if (dbRecord.DeletionInProgress != null && dbRecord.DeletionInProgress.ContainsKey(member)) { continue; } var url = clusterTopology.GetUrlFromTag(member); var node = new InternalReplication { Database = databaseName, NodeTag = member, Url = url }; nodesTopology.Members.Add(GetNodeId(node)); SetNodeStatus(topology, member, nodesTopology, statuses); } foreach (var promotable in topology.Promotables) { if (dbRecord.DeletionInProgress != null && dbRecord.DeletionInProgress.ContainsKey(promotable)) { continue; } topology.PredefinedMentors.TryGetValue(promotable, out var mentorCandidate); var node = GetNode(databaseName, clusterTopology, promotable, mentorCandidate, out var promotableTask); var mentor = topology.WhoseTaskIsIt(ServerStore.Engine.CurrentState, promotableTask, null); nodesTopology.Promotables.Add(GetNodeId(node, mentor)); SetNodeStatus(topology, promotable, nodesTopology, statuses); } foreach (var rehab in topology.Rehabs) { if (dbRecord.DeletionInProgress != null && dbRecord.DeletionInProgress.ContainsKey(rehab)) { continue; } var node = GetNode(databaseName, clusterTopology, rehab, null, out var promotableTask); var mentor = topology.WhoseTaskIsIt(ServerStore.Engine.CurrentState, promotableTask, null); nodesTopology.Rehabs.Add(GetNodeId(node, mentor)); SetNodeStatus(topology, rehab, nodesTopology, statuses); } } if (online == false) { // if state of database is found in the cache we can continue if (ServerStore.DatabaseInfoCache.TryGet(databaseName, databaseInfoJson => { databaseInfoJson.Modifications = new DynamicJsonValue(databaseInfoJson) { [nameof(DatabaseInfo.Disabled)] = disabled, [nameof(DatabaseInfo.IndexingStatus)] = indexingStatus.ToString(), [nameof(DatabaseInfo.NodesTopology)] = nodesTopology.ToJson(), [nameof(DatabaseInfo.DeletionInProgress)] = DynamicJsonValue.Convert(dbRecord.DeletionInProgress), [nameof(DatabaseInfo.Environment)] = studioEnvironment }; context.Write(writer, databaseInfoJson); })) { return; } // we won't find it if it is a new database or after a dirty shutdown, // so just report empty values then } var size = db?.GetSizeOnDisk() ?? (new Size(0), new Size(0)); var databaseInfo = new DatabaseInfo { Name = databaseName, Disabled = disabled, TotalSize = size.Data, TempBuffersSize = size.TempBuffers, IsAdmin = true, IsEncrypted = dbRecord.Encrypted, UpTime = online ? (TimeSpan?)GetUptime(db) : null, BackupInfo = GetBackupInfo(db), Alerts = db?.NotificationCenter.GetAlertCount() ?? 0, PerformanceHints = db?.NotificationCenter.GetPerformanceHintCount() ?? 0, RejectClients = false, LoadError = null, IndexingErrors = db?.IndexStore?.GetIndexes()?.Sum(index => index.GetErrorCount()) ?? 0, DocumentsCount = db?.DocumentsStorage.GetNumberOfDocuments() ?? 0, HasRevisionsConfiguration = db?.DocumentsStorage.RevisionsStorage.Configuration != null, HasExpirationConfiguration = db?.ExpiredDocumentsCleaner != null, IndexesCount = db?.IndexStore?.GetIndexes()?.Count() ?? 0, IndexingStatus = indexingStatus, Environment = studioEnvironment, NodesTopology = nodesTopology, ReplicationFactor = topology?.ReplicationFactor ?? -1, DynamicNodesDistribution = topology?.DynamicNodesDistribution ?? false, DeletionInProgress = dbRecord.DeletionInProgress }; var doc = databaseInfo.ToJson(); context.Write(writer, doc); } catch (Exception e) { if (Logger.IsInfoEnabled) { Logger.Info($"Failed to get database info for: {databaseName}", e); } WriteFaultedDatabaseInfo(databaseName, e, context, writer); } }
// Token: 0x06001391 RID: 5009 RVA: 0x0007226E File Offset: 0x0007046E public DiscoverySearchEventBasedAssistant(DatabaseInfo databaseInfo, LocalizedString name, string nonLocalizedName) : base(databaseInfo, name, nonLocalizedName) { }
protected override void InitSessionInfo() { base.InitSessionInfo(); if (Session == null) { return; } AppServerInfo serverInfo = new AppServerInfo(); serverInfo.Protocol = "http"; serverInfo.Address = "192.168.6.114"; serverInfo.Port = 8081; serverInfo.SupportHttps = false; Session.AppServerInfo = serverInfo; //DatabaseInfo dbInfo = new DatabaseInfo(); //dbInfo.TypeID = 3; //dbInfo.TypeName = "ORCL"; //dbInfo.Host = "192.168.4.182"; //dbInfo.Port = 1521; //dbInfo.DBName = "PFOrcl"; //dbInfo.LoginName = "PFDEV"; //dbInfo.Password = "******"; //Session.DatabaseInfo = dbInfo; //Session.DBType = dbInfo.TypeID; //Session.DBConnectionString = dbInfo.GetConnectionString(); //Session.DBType = 3; DatabaseInfo dbInfo = new DatabaseInfo(); dbInfo.TypeID = 2; dbInfo.TypeName = "MSSQL"; dbInfo.Host = "192.168.4.182"; dbInfo.Port = 1433; dbInfo.DBName = "UMPDataDB11251"; dbInfo.LoginName = "PFDEV"; dbInfo.Password = "******"; dbInfo.RealPassword = "******"; Session.DatabaseInfo = dbInfo; Session.DBType = dbInfo.TypeID; Session.DBConnectionString = dbInfo.GetConnectionString(); //DatabaseInfo dbInfo = new DatabaseInfo(); //dbInfo.TypeID = 2; //dbInfo.TypeName = "MSSQL"; //dbInfo.Host = "192.168.7.101"; //dbInfo.Port = 1433; //dbInfo.DBName = "UMPDataDB1031"; //dbInfo.LoginName = "sa"; //dbInfo.Password = "******"; //dbInfo.RealPassword = "******"; //Session.DatabaseInfo = dbInfo; //Session.DBType = dbInfo.TypeID; //Session.DBConnectionString = dbInfo.GetConnectionString(); Session.InstallPath = @"C:\UMPRelease"; WriteLog("AppInit", string.Format("SessionInfo inited.")); }
internal static Dictionary <string, DatabaseInfo> GetDataConnections(SqlCeToolboxPackage package, bool includeServerConnections, bool serverConnectionsOnly) { // http://www.mztools.com/articles/2007/MZ2007018.aspx Dictionary <string, DatabaseInfo> databaseList = new Dictionary <string, DatabaseInfo>(); var dataExplorerConnectionManager = package.GetServiceHelper(typeof(IVsDataExplorerConnectionManager)) as IVsDataExplorerConnectionManager; //Test code... //var objIVsDataProviderManager = package.GetServiceHelper(typeof(IVsDataProviderManager)) as IVsDataProviderManager; //var objIVsDataConnectionManager = package.GetServiceHelper(typeof(IVsDataConnectionManager)) as IVsDataConnectionManager; //var objIVsDataSourceManager = package.GetServiceHelper(typeof(IVsDataSourceManager)) as IVsDataSourceManager; //IVsDataProvider objIVsDataProvider; //foreach (var objIVsDataSource in objIVsDataSourceManager.Sources) //{ // //System.Diagnostics.Debug.WriteLine(objIVsDataSource.DisplayName); // //System.Diagnostics.Debug.WriteLine(objIVsDataSource.Guid.ToString()); // //foreach (var objProviderGuid in objIVsDataSource.GetProviders()) // //{ // // objIVsDataProvider = objIVsDataProviderManager.GetDataProvider(objProviderGuid); // // System.Diagnostics.Debug.WriteLine(objIVsDataProvider.DisplayName); // // System.Diagnostics.Debug.WriteLine(objIVsDataProvider.Guid.ToString()); // //} //} // End test code Guid provider35 = new Guid(Resources.SqlCompact35Provider); Guid provider40 = new Guid(Resources.SqlCompact40Provider); Guid provider40Private = new Guid(Resources.SqlCompact40PrivateProvider); Guid providerSqLite = new Guid(Resources.SQLiteProvider); Guid providerSqlitePrivate = new Guid(Resources.SqlitePrivateProvider); bool isV35Installed = RepositoryHelper.IsV35Installed() && DdexProviderIsInstalled(provider35); bool isV40Installed = RepositoryHelper.IsV40Installed() && (DdexProviderIsInstalled(provider40) || DdexProviderIsInstalled(provider40Private)); if (dataExplorerConnectionManager != null) { foreach (var connection in dataExplorerConnectionManager.Connections.Values) { try { var objProviderGuid = connection.Provider; if (!serverConnectionsOnly) { if ((objProviderGuid == provider35 && isV35Installed) || (objProviderGuid == provider40 && isV40Installed) || (objProviderGuid == provider40Private && isV40Installed)) { DatabaseType dbType = DatabaseType.SQLCE40; if (objProviderGuid == provider35) { dbType = DatabaseType.SQLCE35; } var serverVersion = "4.0"; if (dbType == DatabaseType.SQLCE35) { serverVersion = "3.5"; } var sConnectionString = DataProtection.DecryptString(connection.EncryptedConnectionString); if (!sConnectionString.Contains("Mobile Device")) { DatabaseInfo info = new DatabaseInfo() { Caption = connection.DisplayName, FromServerExplorer = true, DatabaseType = dbType, ServerVersion = serverVersion, ConnectionString = sConnectionString }; info.FileIsMissing = RepositoryHelper.IsMissing(info); if (!databaseList.ContainsKey(sConnectionString)) { databaseList.Add(sConnectionString, info); } } } if (objProviderGuid == providerSqLite || objProviderGuid == providerSqlitePrivate) { DatabaseType dbType = DatabaseType.SQLite; var sConnectionString = DataProtection.DecryptString(connection.EncryptedConnectionString); DatabaseInfo info = new DatabaseInfo() { Caption = connection.DisplayName, FromServerExplorer = true, DatabaseType = dbType, ServerVersion = SqliteEngineVersion, ConnectionString = sConnectionString }; info.FileIsMissing = RepositoryHelper.IsMissing(info); if (!databaseList.ContainsKey(sConnectionString)) { databaseList.Add(sConnectionString, info); } } } if (includeServerConnections && objProviderGuid == new Guid(Resources.SqlServerDotNetProvider)) { var sConnectionString = DataProtection.DecryptString(connection.EncryptedConnectionString); var info = new DatabaseInfo() { Caption = connection.DisplayName, FromServerExplorer = true, DatabaseType = DatabaseType.SQLServer, ServerVersion = string.Empty, ConnectionString = sConnectionString }; if (!databaseList.ContainsKey(sConnectionString)) { databaseList.Add(sConnectionString, info); } } } catch (KeyNotFoundException) { } catch (NullReferenceException) { } } } #if SSMS try { if (package.TelemetryVersion().Major == 140) { var objectExplorerManager = new ObjectExplorerManager(package); var list = objectExplorerManager.GetAllServerUserDatabases(); foreach (var item in list) { if (!databaseList.ContainsKey(item.Key)) { databaseList.Add(item.Key, item.Value); } } } } catch (MissingMethodException) { } #endif return(databaseList); }
private void ListDatabases(string tile, string syncdb) { var dispatcher = Dispatcher; var databases = DatabaseInfo.GetAll(); var open = tile == null ? null : databases.FirstOrDefault( x => x.Folder == tile); if (open != null) { dispatcher.BeginInvoke( () => Open(open, true)); return; } foreach (var db in databases) { db.LoadDetails(); } var items = databases .Where(x => x.Details != null) .Select(x => new DatabaseItem(x)) .OrderBy(x => x.Name) .ToList(); foreach (var item in items) { var local = item; dispatcher.BeginInvoke(() => { if (_items.Contains(local)) { return; } UpdateItem(local, null); _items.Add(local); }); } var hasUpdatables = items .Any(x => x.CanUpdate); dispatcher.BeginInvoke(() => _RefreshButton.IsEnabled = hasUpdatables); if (syncdb != null) { foreach (var db in items) { var test = (DatabaseInfo)db.Info; if (test.Folder == syncdb) { db.IsUpdating = true; } } var udbi = databases.FirstOrDefault(x => x.Folder == syncdb); var udb = new DatabaseItem(udbi); Update(udb); } var UpdateAbleDBs = items .Where(x => x.CanUpdate); // AutoUpdate if (!_fAppLoaded) { _fAppLoaded = true; dispatcher.BeginInvoke(() => { if (hasUpdatables) { _RefreshButton.IsEnabled = true; if (AppSettings.Instance.AutoUpdate) { if (AppSettings.Instance.AutoUpdateWLAN) { if (DeviceNetworkInformation.IsWiFiEnabled) { foreach (var uDB in UpdateAbleDBs) { Update(uDB); } } } else { foreach (var uDB in UpdateAbleDBs) { Update(uDB); } } } } else { _RefreshButton.IsEnabled = false; } }); } }
public static void ShowNewKey(this IRegionDialogService dialogService, DatabaseInfo database, Action <IDialogResult> callback) { //dialogService.ShowDialog(nameof(NewKeyView), new DialogParameters { { "database_info", database } }, callback); }
// Token: 0x060011A6 RID: 4518 RVA: 0x000676AF File Offset: 0x000658AF public ITimeBasedAssistant CreateInstance(DatabaseInfo databaseInfo) { return(new InferenceTrainingAssistant(databaseInfo, this.Name, this.NonLocalizedName, this.trainingStatusLogger, this.truthLabelsStatusLogger, this.groupingModelTrainingConfiguration, this.groupingModelTrainingStatusLogger, InferenceTrainingAssistantType.IsTruthLabelsLoggingEnabled(false))); }
public string GetNameForCommandText(DatabaseInfo databaseInfo) => databaseInfo.ParameterPrefix + name;
public DatabaseInfo Get(Database database) { DatabaseInfo item = new DatabaseInfo(); using (SqlConnection conn = new SqlConnection(connectioString)) { using (SqlCommand command = new SqlCommand(DatabaseSQLCommand.GetVersion(database), conn)) { conn.Open(); item.Server = conn.DataSource; item.Database = conn.Database; using (SqlDataReader reader = command.ExecuteReader()) { if (reader.Read()) { string versionValue = reader["Version"] as string; try { // used to use the decimal as well when Azure was 10.25 var version = new Version(versionValue); item.VersionNumber = float.Parse(String.Format("{0}.{1}", version.Major, version.Minor), CultureInfo.InvariantCulture); int?edition = null; if (reader.FieldCount > 1 && !reader.IsDBNull(1)) { int validEdition; string editionValue = reader[1].ToString(); if (!String.IsNullOrEmpty(editionValue) && int.TryParse(editionValue, out validEdition)) { edition = validEdition; } } item.SetEdition(edition); } catch (Exception notAGoodIdeaToCatchAllErrors) { var exception = new SchemaException( String.Format("Error parsing ProductVersion. ({0})", versionValue ?? "[null]") , notAGoodIdeaToCatchAllErrors); if (!UseDefaultVersionOnVersionParseError) { throw exception; } } } } } using (SqlCommand command = new SqlCommand(DatabaseSQLCommand.Get(item.Version, database), conn)) { using (SqlDataReader reader = command.ExecuteReader()) { if (reader.Read()) { item.Collation = reader["Collation"].ToString(); item.HasFullTextEnabled = ((int)reader["IsFulltextEnabled"]) == 1; } } } } return(item); }
public void GenerateServerDgmlFiles() { try { if (_package.Dte2.Mode == vsIDEMode.vsIDEModeDebug) { EnvDteHelper.ShowError("Cannot generate code while debugging"); return; } var databaseList = EnvDteHelper.GetDataConnections(_package); var psd = _package.GetView <IPickServerDatabaseDialog>(); psd.PublishConnections(databaseList.Select(m => new DatabaseConnectionModel { ConnectionName = m.Value.Caption, ConnectionString = m.Value.ConnectionString, DatabaseType = m.Value.DatabaseType })); var pickDataSourceResult = psd.ShowAndAwaitUserResponse(true); if (!pickDataSourceResult.ClosedByOK) { return; } _package.Dte2.StatusBar.Text = "Loading schema information..."; // Reload the database list, in case the user has added a new database in the dialog databaseList = EnvDteHelper.GetDataConnections(_package); DatabaseInfo dbInfo = null; if (pickDataSourceResult.Payload.Connection != null) { dbInfo = databaseList.Single(m => m.Value.ConnectionString == pickDataSourceResult.Payload.Connection?.ConnectionString).Value; } if (dbInfo == null) { // User didn't select a database, should be impossible, though return; } if (dbInfo.DatabaseType == DatabaseType.SQLCE35) { EnvDteHelper.ShowError($"Unsupported provider: {dbInfo.ServerVersion}"); return; } var ptd = new PickTablesDialog(); using (var repository = RepositoryHelper.CreateRepository(dbInfo)) { var ti = new List <TableInformation>(); var tables = repository.GetAllTableNamesForExclusion(); foreach (var table in tables) { ti.Add(TableInformation.Parse(table)); } ptd.Tables = ti; } var res = ptd.ShowModal(); if (!res.HasValue || !res.Value) { return; } var name = RepositoryHelper.GetClassBasis(dbInfo.ConnectionString, dbInfo.DatabaseType); var path = Path.Combine(Path.GetTempPath(), name + ".schema.dgml"); if (File.Exists(path)) { File.SetAttributes(path, FileAttributes.Normal); } using (var repository = RepositoryHelper.CreateRepository(dbInfo)) { var generator = RepositoryHelper.CreateGenerator(repository, path, dbInfo.DatabaseType); generator.GenerateSchemaGraph(dbInfo.ConnectionString, ptd.Tables.Select(m => m.UnsafeFullName).ToList()); File.SetAttributes(path, FileAttributes.ReadOnly); _package.Dte2.ItemOperations.OpenFile(path); _package.Dte2.ActiveDocument.Activate(); } Telemetry.TrackEvent("PowerTools.GenerateSchemaDgml"); } catch (Exception ex) { _package.LogError(new List <string>(), ex); } }
/// <summary> /// Control for two Rising Bubble /// </summary> /// <param name="p"></param> /// <param name="kelem"></param> /// <param name="_DbPath"></param> /// <returns></returns> public static XNSE_Control BubbleMerger(int p = 2, int kelem = 40, string _DbPath = null) { XNSE_Control C = new XNSE_Control(); _DbPath = @"D:\local\local_test_db"; // basic database options // ====================== #region db C.DbPath = _DbPath; C.savetodb = C.DbPath != null; C.ProjectName = "XNSE/Bubble"; C.ProjectDescription = "bubble merger"; C.Tags.Add("smolianski"); #endregion // DG degrees // ========== #region degrees C.FieldOptions.Add("VelocityX", new FieldOpts() { Degree = p, SaveToDB = FieldOpts.SaveToDBOpt.TRUE }); C.FieldOptions.Add("VelocityY", new FieldOpts() { Degree = p, SaveToDB = FieldOpts.SaveToDBOpt.TRUE }); C.FieldOptions.Add("GravityY", new FieldOpts() { SaveToDB = FieldOpts.SaveToDBOpt.TRUE }); C.FieldOptions.Add("Pressure", new FieldOpts() { Degree = p - 1, SaveToDB = FieldOpts.SaveToDBOpt.TRUE }); C.FieldOptions.Add("PhiDG", new FieldOpts() { SaveToDB = FieldOpts.SaveToDBOpt.TRUE }); C.FieldOptions.Add("Phi", new FieldOpts() { Degree = p, SaveToDB = FieldOpts.SaveToDBOpt.TRUE }); C.FieldOptions.Add("Curvature", new FieldOpts() { Degree = p, SaveToDB = FieldOpts.SaveToDBOpt.TRUE }); #endregion // grid generation // =============== #region grid double h = 1.0 / (double)kelem; C.GridFunc = delegate() { double[] Xnodes = GenericBlas.Linspace(0, 1.0, kelem + 1); double[] Ynodes = GenericBlas.Linspace(0, 2.0, 2 * kelem + 1); var grd = Grid2D.Cartesian2DGrid(Xnodes, Ynodes, periodicX: false); grd.EdgeTagNames.Add(1, "wall_lower"); grd.EdgeTagNames.Add(2, "wall_upper"); grd.EdgeTagNames.Add(3, "freeslip_left"); grd.EdgeTagNames.Add(4, "freeslip_right"); grd.DefineEdgeTags(delegate(double[] X) { byte et = 0; if (Math.Abs(X[1]) <= 1.0e-8) { et = 1; } if (Math.Abs(X[1] - 2.0) <= 1.0e-8) { et = 2; } if (Math.Abs(X[0]) <= 1.0e-8) { et = 3; } if (Math.Abs(X[0] - 1.0) <= 1.0e-8) { et = 4; } return(et); }); return(grd); }; #endregion // Physical Parameters // =================== #region physics // Bo = 250, Re = 35 C.PhysicalParameters.rho_A = 1; C.PhysicalParameters.rho_B = 100; C.PhysicalParameters.mu_A = 0.01; C.PhysicalParameters.mu_B = 0.1; C.PhysicalParameters.Sigma = 0.097; C.PhysicalParameters.IncludeConvection = true; C.PhysicalParameters.Material = true; #endregion // Initial Values // ============== #region init // large bubble above double[] center_l = new double[] { 0.5, 1.0 }; double radius_l = 0.25; Func <double[], double> bubble_l = (X => ((X[0] - center_l[0]).Pow2() + (X[1] - center_l[1]).Pow2()).Sqrt() - radius_l); // signed-distance form // small bubble under double[] center_s = new double[] { 0.5, 0.5 }; double radius_s = 0.2; Func <double[], double> bubble_s = (X => ((X[0] - center_s[0]).Pow2() + (X[1] - center_s[1]).Pow2()).Sqrt() - radius_s); // signed-distance form Func <double[], double> PhiFunc = (X => Math.Min(bubble_l(X), bubble_s(X))); //C.InitialValues_Evaluators.Add("Phi", PhiFunc); //C.InitialValues_Evaluators.Add("VelocityX#A", X => 0.0); //C.InitialValues_Evaluators.Add("VelocityX#B", X => 0.0); //C.InitialValues_Evaluators.Add("GravityY#A", X => -0.981); //C.InitialValues_Evaluators.Add("GravityY#B", X => -0.981); var database = new DatabaseInfo(_DbPath); Guid restartID = new Guid("9d1bbcd2-38d0-43d3-90d4-7ac7f535079c"); C.RestartInfo = new Tuple <Guid, Foundation.IO.TimestepNumber>(restartID, null); #endregion // boundary conditions // =================== #region BC C.AddBoundaryCondition("wall_lower"); C.AddBoundaryCondition("wall_upper"); C.AddBoundaryCondition("freeslip_left"); C.AddBoundaryCondition("freeslip_right"); #endregion // misc. solver options // ==================== #region solver C.LinearSolver = new DirectSolver() { WhichSolver = DirectSolver._whichSolver.MUMPS }; //C.AdvancedDiscretizationOptions.CellAgglomerationThreshold = 0.2; //C.AdvancedDiscretizationOptions.PenaltySafety = 40; //C.AdvancedDiscretizationOptions.UseGhostPenalties = true; C.LSContiProjectionMethod = ContinuityProjectionOption.SpecFEM; //C.option_solver = C.PhysicalParameters.IncludeConvection ? "fixpoint+levelset" : "direct"; C.VelocityBlockPrecondMode = MultigridOperator.Mode.SymPart_DiagBlockEquilib_DropIndefinite; C.NoOfMultigridLevels = 1; C.Solver_MaxIterations = 50; C.Solver_ConvergenceCriterion = 1e-8; C.LevelSet_ConvergenceCriterion = 1e-6; C.Option_LevelSetEvolution = LevelSetEvolution.FastMarching; C.AdvancedDiscretizationOptions.FilterConfiguration = CurvatureAlgorithms.FilterConfiguration.Default; C.AdvancedDiscretizationOptions.SST_isotropicMode = Solution.XNSECommon.SurfaceStressTensor_IsotropicMode.Curvature_Projected; C.AdvancedDiscretizationOptions.FilterConfiguration.FilterCurvatureCycles = 1; #endregion // Timestepping // ============ #region time C.Timestepper_Scheme = XNSE_Control.TimesteppingScheme.ImplicitEuler; C.Timestepper_BDFinit = TimeStepperInit.SingleInit; C.Timestepper_LevelSetHandling = LevelSetHandling.LieSplitting; C.CompMode = AppControl._CompMode.Transient; double dt = 2e-4; C.dtMax = dt; C.dtMin = dt; C.NoOfTimesteps = 1500; C.saveperiod = 10; #endregion return(C); }
// Token: 0x060011A7 RID: 4519 RVA: 0x000676E1 File Offset: 0x000658E1 public override void OnWorkCycleStart(DatabaseInfo databaseInfo) { this.trainingConfiguration = InferenceTrainingConfiguration.Current; }
public async System.Threading.Tasks.Task ReverseEngineerCodeFirstAsync(Project project) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); try { var dteH = new EnvDteHelper(); string dacpacSchema = null; if (_package.Dte2.Mode == vsIDEMode.vsIDEModeDebug) { EnvDteHelper.ShowError("Cannot generate code while debugging"); return; } var projectPath = project.Properties.Item("FullPath")?.Value.ToString(); var optionsPaths = project.GetConfigFiles(); var optionsPath = optionsPaths.First(); var renamingPath = project.GetRenamingPath(); if (optionsPaths.Count > 1) { var pcd = _package.GetView <IPickConfigDialog>(); pcd.PublishConfigurations(optionsPaths.Select(m => new ConfigModel { ConfigPath = m, ProjectPath = projectPath })); var pickConfigResult = pcd.ShowAndAwaitUserResponse(true); if (!pickConfigResult.ClosedByOK) { return; } optionsPath = pickConfigResult.Payload.ConfigPath; } var databaseList = VsDataHelper.GetDataConnections(_package); var dacpacList = _package.Dte2.DTE.GetDacpacFilesInActiveSolution(EnvDteHelper.GetProjectFilesInSolution(_package)); var options = ReverseEngineerOptionsExtensions.TryRead(optionsPath); var psd = _package.GetView <IPickServerDatabaseDialog>(); if (databaseList != null && databaseList.Any()) { psd.PublishConnections(databaseList.Select(m => new DatabaseConnectionModel { ConnectionName = m.Value.Caption, ConnectionString = m.Value.ConnectionString, DatabaseType = m.Value.DatabaseType, DataConnection = m.Value.DataConnection, })); } if (dacpacList != null && dacpacList.Any()) { psd.PublishDefinitions(dacpacList.Select(m => new DatabaseDefinitionModel { FilePath = m })); } if (options != null) { if (options.FilterSchemas && options.Schemas != null && options.Schemas.Any()) { psd.PublishSchemas(options.Schemas); } psd.PublishCodeGenerationMode(options.CodeGenerationMode); if (!string.IsNullOrEmpty(options.UiHint)) { psd.PublishUiHint(options.UiHint); } } var pickDataSourceResult = psd.ShowAndAwaitUserResponse(true); if (!pickDataSourceResult.ClosedByOK) { return; } var useEFCore5 = pickDataSourceResult.Payload.IncludeViews; var filterSchemas = pickDataSourceResult.Payload.FilterSchemas; var schemas = filterSchemas ? pickDataSourceResult.Payload.Schemas : null; _package.Dte2.StatusBar.Text = "Getting ready to connect..."; DatabaseInfo dbInfo = null; if (pickDataSourceResult.Payload.Connection != null) { dbInfo = new DatabaseInfo { ConnectionString = pickDataSourceResult.Payload.Connection.ConnectionString, Caption = pickDataSourceResult.Payload.Connection.ConnectionName, DatabaseType = pickDataSourceResult.Payload.Connection.DatabaseType, DataConnection = pickDataSourceResult.Payload.Connection.DataConnection, }; } var dacpacPath = pickDataSourceResult.Payload.Definition?.FilePath; if (dbInfo == null) { dbInfo = new DatabaseInfo(); } if (!string.IsNullOrEmpty(dacpacPath)) { dbInfo.DatabaseType = DatabaseType.SQLServerDacpac; dbInfo.ConnectionString = $"Data Source=(local);Initial Catalog={Path.GetFileNameWithoutExtension(dacpacPath)};Integrated Security=true;"; dacpacPath = _package.Dte2.DTE.BuildSqlProj(dacpacPath); if (string.IsNullOrEmpty(dacpacPath)) { EnvDteHelper.ShowMessage("Unable to build selected Database Project"); return; } } if (dbInfo.DatabaseType == DatabaseType.SQLCE35 || dbInfo.DatabaseType == DatabaseType.SQLCE40 || dbInfo.DatabaseType == DatabaseType.Undefined) { EnvDteHelper.ShowError($"Unsupported provider: {dbInfo.ServerVersion}"); return; } _package.Dte2.StatusBar.Text = "Loading database objects..."; object icon = (short)Microsoft.VisualStudio.Shell.Interop.Constants.SBAI_Build; _package.Dte2.StatusBar.Animate(true, icon); var predefinedTables = !string.IsNullOrEmpty(dacpacPath) ? await GetDacpacTablesAsync(dacpacPath, useEFCore5) : await GetTablesAsync(dbInfo, useEFCore5, schemas); _package.Dte2.StatusBar.Animate(false, icon); var preselectedTables = new List <SerializationTableModel>(); if (options != null) { dacpacSchema = options.DefaultDacpacSchema; if (options.Tables.Count > 0) { var normalizedTables = reverseEngineerHelper.NormalizeTables(options.Tables, dbInfo.DatabaseType == DatabaseType.SQLServer); preselectedTables.AddRange(normalizedTables); } } var namingOptionsAndPath = CustomNameOptionsExtensions.TryRead(renamingPath, optionsPath); _package.Dte2.StatusBar.Clear(); var ptd = _package.GetView <IPickTablesDialog>() .AddTables(predefinedTables, namingOptionsAndPath.Item1) .PreselectTables(preselectedTables); var pickTablesResult = ptd.ShowAndAwaitUserResponse(true); if (!pickTablesResult.ClosedByOK) { return; } _package.Dte2.StatusBar.Text = "Loading options..."; var classBasis = VsDataHelper.GetDatabaseName(dbInfo.ConnectionString, dbInfo.DatabaseType); var model = reverseEngineerHelper.GenerateClassName(classBasis) + "Context"; var packageResult = project.ContainsEfCoreReference(dbInfo.DatabaseType); var presets = new ModelingOptionsModel { InstallNuGetPackage = !packageResult.Item1, ModelName = options != null ? options.ContextClassName : model, ProjectName = project.Name, Namespace = options != null ? options.ProjectRootNamespace : project.Properties.Item("DefaultNamespace").Value.ToString(), DacpacPath = dacpacPath, }; if (options != null) { presets.UseDataAnnotations = !options.UseFluentApiOnly; presets.UseDatabaseNames = options.UseDatabaseNames; presets.UsePluralizer = options.UseInflector; presets.UseDbContextSplitting = options.UseDbContextSplitting; presets.UseHandlebars = options.UseHandleBars; presets.SelectedHandlebarsLanguage = options.SelectedHandlebarsLanguage; presets.IncludeConnectionString = options.IncludeConnectionString; presets.ModelName = options.ContextClassName; presets.Namespace = options.ProjectRootNamespace; presets.OutputPath = options.OutputPath; presets.OutputContextPath = options.OutputContextPath; presets.ModelNamespace = options.ModelNamespace; presets.ContextNamespace = options.ContextNamespace; presets.SelectedToBeGenerated = options.SelectedToBeGenerated; presets.DacpacPath = options.Dacpac; presets.UseEf6Pluralizer = options.UseLegacyPluralizer; presets.MapSpatialTypes = options.UseSpatial; presets.MapNodaTimeTypes = options.UseNodaTime; presets.UseBoolPropertiesWithoutDefaultSql = options.UseBoolPropertiesWithoutDefaultSql; presets.UseNoConstructor = options.UseNoConstructor; presets.UseNoNavigations = options.UseNoNavigations; presets.UseNullableReferences = options.UseNullableReferences; } var modelDialog = _package.GetView <IModelingOptionsDialog>() .ApplyPresets(presets); _package.Dte2.StatusBar.Clear(); var modelingOptionsResult = modelDialog.ShowAndAwaitUserResponse(true); if (!modelingOptionsResult.ClosedByOK) { return; } options = new ReverseEngineerOptions { UseFluentApiOnly = !modelingOptionsResult.Payload.UseDataAnnotations, ConnectionString = dbInfo.ConnectionString, ContextClassName = modelingOptionsResult.Payload.ModelName, DatabaseType = dbInfo.DatabaseType, ProjectPath = projectPath, OutputPath = modelingOptionsResult.Payload.OutputPath, OutputContextPath = modelingOptionsResult.Payload.OutputContextPath, ContextNamespace = modelingOptionsResult.Payload.ContextNamespace, ModelNamespace = modelingOptionsResult.Payload.ModelNamespace, ProjectRootNamespace = modelingOptionsResult.Payload.Namespace, UseDatabaseNames = modelingOptionsResult.Payload.UseDatabaseNames, UseInflector = modelingOptionsResult.Payload.UsePluralizer, UseLegacyPluralizer = modelingOptionsResult.Payload.UseEf6Pluralizer, UseSpatial = modelingOptionsResult.Payload.MapSpatialTypes, UseNodaTime = modelingOptionsResult.Payload.MapNodaTimeTypes, UseDbContextSplitting = modelingOptionsResult.Payload.UseDbContextSplitting, UseHandleBars = modelingOptionsResult.Payload.UseHandlebars, SelectedHandlebarsLanguage = modelingOptionsResult.Payload.SelectedHandlebarsLanguage, IncludeConnectionString = modelingOptionsResult.Payload.IncludeConnectionString, SelectedToBeGenerated = modelingOptionsResult.Payload.SelectedToBeGenerated, UseBoolPropertiesWithoutDefaultSql = modelingOptionsResult.Payload.UseBoolPropertiesWithoutDefaultSql, UseNullableReferences = modelingOptionsResult.Payload.UseNullableReferences, UseNoConstructor = modelingOptionsResult.Payload.UseNoConstructor, UseNoNavigations = modelingOptionsResult.Payload.UseNoNavigations, Dacpac = dacpacPath, DefaultDacpacSchema = dacpacSchema, Tables = pickTablesResult.Payload.Objects.ToList(), CustomReplacers = pickTablesResult.Payload.CustomReplacers.ToList(), FilterSchemas = filterSchemas, Schemas = schemas?.ToList(), CodeGenerationMode = pickDataSourceResult.Payload.IncludeViews ? CodeGenerationMode.EFCore5 : CodeGenerationMode.EFCore3, UiHint = pickDataSourceResult.Payload.UiHint, }; if (options.DatabaseType == DatabaseType.SQLServer && string.IsNullOrEmpty(options.Dacpac)) { var rightsAndVersion = reverseEngineerHelper.HasSqlServerViewDefinitionRightsAndVersion(options.ConnectionString); if (rightsAndVersion.Item1 == false) { EnvDteHelper.ShowMessage("The SQL Server user does not have 'VIEW DEFINITION' rights, default constraints may not be available."); } if (rightsAndVersion.Item2.Major < 11) { EnvDteHelper.ShowMessage($"SQL Server version {rightsAndVersion.Item2} may not be supported."); } } if (modelingOptionsResult.Payload.UseHandlebars) { var dropped = (DropTemplates(projectPath, useEFCore5)); if (dropped) { project.ProjectItems.AddFromDirectory(Path.Combine(projectPath, "CodeTemplates")); } } var startTime = DateTime.Now; _package.Dte2.StatusBar.Animate(true, icon); _package.Dte2.StatusBar.Text = "Generating code..."; var revEngResult = EfRevEngLauncher.LaunchExternalRunner(options, useEFCore5); _package.Dte2.StatusBar.Animate(false, icon); if (modelingOptionsResult.Payload.SelectedToBeGenerated == 0 || modelingOptionsResult.Payload.SelectedToBeGenerated == 2) { foreach (var filePath in revEngResult.EntityTypeFilePaths) { project.ProjectItems.AddFromFile(filePath); } if (modelingOptionsResult.Payload.SelectedToBeGenerated == 2) { if (File.Exists(revEngResult.ContextFilePath)) { File.Delete(revEngResult.ContextFilePath); } foreach (var filePath in revEngResult.ContextConfigurationFilePaths) { if (File.Exists(filePath)) { File.Delete(filePath); } } } } if (modelingOptionsResult.Payload.SelectedToBeGenerated == 0 || modelingOptionsResult.Payload.SelectedToBeGenerated == 1) { foreach (var filePath in revEngResult.ContextConfigurationFilePaths) { project.ProjectItems.AddFromFile(filePath); } project.ProjectItems.AddFromFile(revEngResult.ContextFilePath); _package.Dte2.ItemOperations.OpenFile(revEngResult.ContextFilePath); if (modelingOptionsResult.Payload.SelectedToBeGenerated == 1) { foreach (var filePath in revEngResult.EntityTypeFilePaths) { if (File.Exists(filePath)) { File.Delete(filePath); } } } } var duration = DateTime.Now - startTime; var missingProviderPackage = packageResult.Item1 ? null : packageResult.Item2; if (modelingOptionsResult.Payload.InstallNuGetPackage || modelingOptionsResult.Payload.SelectedToBeGenerated == 2) { missingProviderPackage = null; } _package.Dte2.StatusBar.Text = "Reporting result..."; var errors = reverseEngineerHelper.ReportRevEngErrors(revEngResult, missingProviderPackage); SaveOptions(project, optionsPath, options, new Tuple <List <Schema>, string>(pickTablesResult.Payload.CustomReplacers.ToList(), namingOptionsAndPath.Item2)); if (modelingOptionsResult.Payload.InstallNuGetPackage) { _package.Dte2.StatusBar.Text = "Installing EF Core provider package"; var nuGetHelper = new NuGetHelper(); await nuGetHelper.InstallPackageAsync(packageResult.Item2, project); } _package.Dte2.StatusBar.Text = $"Reverse engineer completed in {duration:h\\:mm\\:ss}"; EnvDteHelper.ShowMessage(errors); if (revEngResult.EntityErrors.Count > 0) { _package.LogError(revEngResult.EntityErrors, null); } if (revEngResult.EntityWarnings.Count > 0) { _package.LogError(revEngResult.EntityWarnings, null); } Telemetry.TrackEvent("PowerTools.ReverseEngineer"); } catch (AggregateException ae) { foreach (var innerException in ae.Flatten().InnerExceptions) { _package.LogError(new List <string>(), innerException); } } catch (Exception exception) { _package.LogError(new List <string>(), exception); } }
public async void ReverseEngineerCodeFirst(Project project) { try { var dteH = new EnvDteHelper(); var revEng = new EfCoreReverseEngineer(); string dacpacSchema = null; if (_package.Dte2.Mode == vsIDEMode.vsIDEModeDebug) { EnvDteHelper.ShowError("Cannot generate code while debugging"); return; } var startTime = DateTime.Now; var projectPath = project.Properties.Item("FullPath").Value.ToString(); var optionsPath = Path.Combine(projectPath, "efpt.config.json"); var renamingPath = Path.Combine(projectPath, "efpt.renaming.json"); var databaseList = EnvDteHelper.GetDataConnections(_package); var dacpacList = _package.Dte2.DTE.GetDacpacFilesInActiveSolution(); var psd = _package.GetView <IPickServerDatabaseDialog>(); if (databaseList != null && databaseList.Any()) { psd.PublishConnections(databaseList.Select(m => new DatabaseConnectionModel { ConnectionName = m.Value.Caption, ConnectionString = m.Value.ConnectionString, DatabaseType = m.Value.DatabaseType })); } if (dacpacList != null && dacpacList.Any()) { psd.PublishDefinitions(dacpacList.Select(m => new DatabaseDefinitionModel { FilePath = m })); } var pickDataSourceResult = psd.ShowAndAwaitUserResponse(true); if (!pickDataSourceResult.ClosedByOK) { return; } _package.Dte2.StatusBar.Text = "Loading schema information..."; // Reload the database list, in case the user has added a new database in the dialog databaseList = EnvDteHelper.GetDataConnections(_package); DatabaseInfo dbInfo = null; if (pickDataSourceResult.Payload.Connection != null) { dbInfo = databaseList.Single(m => m.Value.ConnectionString == pickDataSourceResult.Payload.Connection?.ConnectionString).Value; } var dacpacPath = pickDataSourceResult.Payload.Definition?.FilePath; if (dbInfo == null) { dbInfo = new DatabaseInfo(); } if (!string.IsNullOrEmpty(dacpacPath)) { dbInfo.DatabaseType = DatabaseType.SQLServer; dbInfo.ConnectionString = "Data Source=.;Initial Catalog=" + Path.GetFileNameWithoutExtension(dacpacPath); dacpacPath = _package.Dte2.DTE.BuildSqlProj(dacpacPath); if (string.IsNullOrEmpty(dacpacPath)) { EnvDteHelper.ShowMessage("Unable to build selected Database Project"); return; } } if (dbInfo.DatabaseType == DatabaseType.SQLCE35) { EnvDteHelper.ShowError($"Unsupported provider: {dbInfo.ServerVersion}"); return; } var options = ReverseEngineerOptionsExtensions.TryRead(optionsPath); var predefinedTables = !string.IsNullOrEmpty(dacpacPath) ? revEng.GetDacpacTables(dacpacPath) : GetTablesFromRepository(dbInfo); var preselectedTables = new List <TableInformationModel>(); if (options != null) { dacpacSchema = options.DefaultDacpacSchema; if (options.Tables.Count > 0) { preselectedTables.AddRange(options.Tables); } } var ptd = _package.GetView <IPickTablesDialog>() .AddTables(predefinedTables) .PreselectTables(preselectedTables); var customNameOptions = CustomNameOptionsExtensions.TryRead(renamingPath); var pickTablesResult = ptd.ShowAndAwaitUserResponse(true); if (!pickTablesResult.ClosedByOK) { return; } var classBasis = string.Empty; if (dbInfo.DatabaseType == DatabaseType.Npgsql) { classBasis = EnvDteHelper.GetNpgsqlDatabaseName(dbInfo.ConnectionString); } else if (dbInfo.DatabaseType == DatabaseType.Mysql) { classBasis = EnvDteHelper.GetMysqlDatabaseName(dbInfo.ConnectionString); } else { classBasis = RepositoryHelper.GetClassBasis(dbInfo.ConnectionString, dbInfo.DatabaseType); } var model = revEng.GenerateClassName(classBasis) + "Context"; var packageResult = project.ContainsEfCoreReference(dbInfo.DatabaseType); var presets = new ModelingOptionsModel { InstallNuGetPackage = !packageResult.Item1, ModelName = options != null ? options.ContextClassName : model, ProjectName = project.Name, Namespace = options != null ? options.ProjectRootNamespace : project.Properties.Item("DefaultNamespace").Value.ToString(), DacpacPath = dacpacPath, }; if (options != null) { presets.UseDataAnnotations = !options.UseFluentApiOnly; presets.UseDatabaseNames = options.UseDatabaseNames; presets.UsePluralizer = options.UseInflector; presets.UseHandelbars = options.UseHandleBars; presets.ReplaceId = options.IdReplace; presets.IncludeConnectionString = options.IncludeConnectionString; presets.ModelName = options.ContextClassName; presets.Namespace = options.ProjectRootNamespace; presets.OutputPath = options.OutputPath; presets.SelectedTobeGenerated = options.SelectedToBeGenerated; } var modelDialog = _package.GetView <IModelingOptionsDialog>() .ApplyPresets(presets); _package.Dte2.StatusBar.Text = "Getting options..."; var modelingOptionsResult = modelDialog.ShowAndAwaitUserResponse(true); if (!modelingOptionsResult.ClosedByOK) { return; } options = new ReverseEngineerOptions { UseFluentApiOnly = !modelingOptionsResult.Payload.UseDataAnnotations, ConnectionString = dbInfo.ConnectionString, ContextClassName = modelingOptionsResult.Payload.ModelName, DatabaseType = (ReverseEngineer20.DatabaseType)dbInfo.DatabaseType, ProjectPath = projectPath, OutputPath = modelingOptionsResult.Payload.OutputPath, ProjectRootNamespace = modelingOptionsResult.Payload.Namespace, UseDatabaseNames = modelingOptionsResult.Payload.UseDatabaseNames, UseInflector = modelingOptionsResult.Payload.UsePluralizer, IdReplace = modelingOptionsResult.Payload.ReplaceId, UseHandleBars = modelingOptionsResult.Payload.UseHandelbars, IncludeConnectionString = modelingOptionsResult.Payload.IncludeConnectionString, SelectedToBeGenerated = modelingOptionsResult.Payload.SelectedTobeGenerated, Dacpac = dacpacPath, DefaultDacpacSchema = dacpacSchema, Tables = pickTablesResult.Payload.ToList(), CustomReplacers = customNameOptions }; _package.Dte2.StatusBar.Text = "Generating code..."; var tfm = project.Properties.Item("TargetFrameworkMoniker").Value.ToString(); bool isNetStandard = tfm.Contains(".NETStandard,Version=v2.0"); if (modelingOptionsResult.Payload.UseHandelbars) { var dropped = (DropTemplates(projectPath)); if (dropped && !project.IsNetCore() && !isNetStandard) { project.ProjectItems.AddFromDirectory(Path.Combine(projectPath, "CodeTemplates")); } } var revEngResult = revEng.GenerateFiles(options); if (modelingOptionsResult.Payload.SelectedTobeGenerated == 0 || modelingOptionsResult.Payload.SelectedTobeGenerated == 2) { foreach (var filePath in revEngResult.EntityTypeFilePaths) { project.ProjectItems.AddFromFile(filePath); } if (modelingOptionsResult.Payload.SelectedTobeGenerated == 2) { if (File.Exists(revEngResult.ContextFilePath)) { File.Delete(revEngResult.ContextFilePath); } } } if (modelingOptionsResult.Payload.SelectedTobeGenerated == 0 || modelingOptionsResult.Payload.SelectedTobeGenerated == 1) { project.ProjectItems.AddFromFile(revEngResult.ContextFilePath); if (!project.IsNetCore() && !isNetStandard) { _package.Dte2.ItemOperations.OpenFile(revEngResult.ContextFilePath); } if (modelingOptionsResult.Payload.SelectedTobeGenerated == 1) { foreach (var filePath in revEngResult.EntityTypeFilePaths) { if (File.Exists(filePath)) { File.Delete(filePath); } } } } var missingProviderPackage = packageResult.Item1 ? null : packageResult.Item2; if (modelingOptionsResult.Payload.InstallNuGetPackage || modelingOptionsResult.Payload.SelectedTobeGenerated == 2) { missingProviderPackage = null; } _package.Dte2.StatusBar.Text = "Reporting result..."; var errors = ReportRevEngErrors(revEngResult, missingProviderPackage); SaveOptions(project, optionsPath, options); if (modelingOptionsResult.Payload.InstallNuGetPackage) { _package.Dte2.StatusBar.Text = "Installing EF Core provider package"; var nuGetHelper = new NuGetHelper(); await nuGetHelper.InstallPackageAsync(packageResult.Item2, project); } var duration = DateTime.Now - startTime; _package.Dte2.StatusBar.Text = $"Reverse engineer completed in {duration:h\\:mm\\:ss}"; EnvDteHelper.ShowMessage(errors); if (revEngResult.EntityErrors.Count > 0) { _package.LogError(revEngResult.EntityErrors, null); } if (revEngResult.EntityWarnings.Count > 0) { _package.LogError(revEngResult.EntityWarnings, null); } Telemetry.TrackEvent("PowerTools.ReverseEngineer"); } catch (AggregateException ae) { foreach (var innerException in ae.Flatten().InnerExceptions) { _package.LogError(new List <string>(), innerException); } } catch (Exception exception) { _package.LogError(new List <string>(), exception); } }
public static void Update(DatabaseInfo info, Func <DatabaseInfo, bool> queryUpdate, ReportUpdateResult report) { if (info == null) { throw new ArgumentNullException("info"); } if (queryUpdate == null) { throw new ArgumentNullException("queryUpdate"); } if (report == null) { throw new ArgumentNullException("report"); } var details = info.Details; var urlInfo = WebUtils.Deserialize(details.Url); var credentials = WebUtils.CreateCredentials( urlInfo.User, urlInfo.Password, urlInfo.Domain); WebUtils.Download(urlInfo.Url, credentials, (req, getResponse) => { if (!queryUpdate(info)) { return; } HttpWebResponse res; try { res = getResponse(); } catch (WebException ex) { report(info, SyncResults.Failed, ex.Message); return; } using (var buffer = new MemoryStream()) { using (var stream = res.GetResponseStream()) { BufferEx.CopyStream(stream, buffer); buffer.Position = 0; } var check = DatabaseVerifier .VerifyUnattened(buffer); if (check.Result == VerifyResultTypes.Error) { report(info, SyncResults.Failed, check.Message); return; } info.SetDatabase(buffer, details); report(info, SyncResults.Downloaded, null); } }); }