/// <summary> /// /// </summary> /// <param name="isReadOnly"></param> protected AbstractEntity(bool isReadOnly) : base(isReadOnly) { _isNew = true; IsInCache = false; if (EntitySchemaSet.TryGet(GetType(), out _schema)) { _isReadOnly = _schema.AccessLevel == AccessLevel.ReadOnly; } }
/// <summary> /// Set key from keycode /// </summary> /// <param name="keyCode"></param> /// <param name="typeName"></param> internal void SetKeyValue(string keyCode, string typeName) { SchemaTable schemaTable; if (EntitySchemaSet.TryGet(typeName, out schemaTable)) { string[] keyValues = keyCode.Split(KeyCodeJoinChar); for (int i = 0; i < schemaTable.Keys.Length; i++) { string columnName = schemaTable.Keys[i]; var colAttr = schemaTable[columnName]; if (i < keyValues.Length && colAttr != null) { string key = DecodeKeyCode(keyValues[i]); object value = ParseValueType(key, colAttr.ColumnType); SetPropertyValue(columnName, value); } } } }