예제 #1
0
 /// <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;
     }
 }
예제 #2
0
        /// <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);
                    }
                }
            }
        }