public string SaveFlatField(string name, string value)
        {
            string savedValue;
            using (var session = Provider.CreateSessionFactory().CreateSession())
            {
                var query = session.CreateQuery<CsFlatFieldsName>(" WHERE FieldName = '" + name + "'");
                var fieldsName = query.GetSingleResult<CsFlatFieldsName>();

                query = session.CreateQuery<CsFlatFieldsValue>(" WHERE FieldName = '" + name + "'");
                var fieldsValue = query.GetSingleResult<CsFlatFieldsValue>();

                var tranx = session.GetTransaction();
                // Insert this new field
                if (fieldsName == null)
                {
                    fieldsName = new CsFlatFieldsName { FieldName = name };
                    session.Insert(fieldsName);
                }

                // Save its value to FlatFieldsValue table
                if (fieldsValue == null)
                    fieldsValue = new CsFlatFieldsValue { FieldName = name };

                fieldsValue.FieldValue = value;
                var savedObj = fieldsValue.ID > 0 ? session.Update(fieldsValue) : session.Insert(fieldsValue);
                savedValue = savedObj.FieldValue;
                tranx.Commit();
            }
            return savedValue;
        }
        private void InitDefaultFlatFields()
        {
            using (var session = Provider.CreateSessionFactory().CreateSession())
            {
                var tranx = session.GetTransaction();

                foreach (var defaultFlatField in DefaultFlatFields)
                {
                    var flatField = new CsFlatFieldsName { FieldName = defaultFlatField };
                    session.Insert(flatField);
                }

                tranx.Commit();
            }
        }