private bool CanBeRowId(SQLiteColumn column) { if (!column.IsPrimaryKey) { return(false); } if (!column.Type.EqualsIgnoreCase(SQLiteColumnType.INTEGER.ToString())) { return(false); } // https://sqlite.org/lang_createtable.html#rowid // http://www.sqlite.org/pragma.html#pragma_index_xinfo var apk = AutoPrimaryKey; if (apk != null) { var col = apk.IndexColumns.FirstOrDefault(c => c.Name.EqualsIgnoreCase(column.Name)); if (col != null) { return(col.IsRowId); } } return(true); }
public virtual bool IsSynchronized(SQLiteColumn column, SQLiteObjectColumnSynchronizationOptions options) { if (column == null) { throw new ArgumentNullException(nameof(column)); } if (!Name.EqualsIgnoreCase(column.Name)) { return(false); } if (IsNullable == column.IsNotNullable) { return(false); } if (HasDefaultValue) { if (DefaultValue == null) { if (column.DefaultValue != null) { return(false); } // else ok } else { var def = Table.Database.ChangeType(column.DefaultValue, DefaultValue.GetType()); if (!DefaultValue.Equals(def)) { return(false); } } } else if (column.DefaultValue != null) { return(false); } if (IsPrimaryKey != column.IsPrimaryKey) { return(false); } if (!AreCollationsEqual(Collation, column.Collation)) { return(false); } if (AutoIncrements != column.AutoIncrements) { return(false); } if (options.HasFlag(SQLiteObjectColumnSynchronizationOptions.CheckDataType)) { if (!DataType.EqualsIgnoreCase(column.Type)) { return(false); } } else { if (Affinity != column.Affinity) { return(false); } } return(true); }