public virtual void ÖznitelikKaydet <TPropType>(TemelVarlık varlık, string key, TPropType değer, int siteId = 0)
        {
            if (varlık == null)
            {
                throw new ArgumentNullException("varlık");
            }

            if (key == null)
            {
                throw new ArgumentNullException("key");
            }

            string keyGroup = varlık.GetUnproxiedEntityType().Name;

            var props = VarlıkİçinÖznitelikleriAl(varlık.Id, keyGroup)
                        .Where(x => x.SiteId == siteId)
                        .ToList();
            var prop = props.FirstOrDefault(ga =>
                                            ga.Key.Equals(key, StringComparison.InvariantCultureIgnoreCase));

            var değerStr = GenelYardımcı.To <string>(değer);

            if (prop != null)
            {
                if (string.IsNullOrWhiteSpace(değerStr))
                {
                    //sil
                    ÖznitelikSil(prop);
                }
                else
                {
                    //güncelle
                    prop.Value = değerStr;
                    ÖznitelikGüncelle(prop);
                }
            }
            else
            {
                if (!string.IsNullOrWhiteSpace(değerStr))
                {
                    //insert
                    prop = new GenelÖznitelik
                    {
                        VarlıkId = varlık.Id,
                        Key      = key,
                        KeyGroup = keyGroup,
                        Value    = değerStr,
                        SiteId   = siteId,
                    };
                    ÖznitelikEkle(prop);
                }
            }
        }
        public virtual void ÖznitelikEkle(GenelÖznitelik öznitelik)
        {
            if (öznitelik == null)
            {
                throw new ArgumentNullException("öznitelik");
            }

            _genelÖznitelikDeposu.Ekle(öznitelik);

            //önbellek
            _önbelekYönetici.KalıpİleSil(GENELOZNITELIK_PATTERN_KEY);

            //olay bildirimleri
            _olayYayınlayıcı.OlayEklendi(öznitelik);
        }