public static TPropType ÖznitelikAl <TPropType>(this TemelVarlık varlık,
                                                        string key, IGenelÖznitelikServisi genelÖznitelikServisi, int siteId = 0)
        {
            if (varlık == null)
            {
                throw new ArgumentNullException("varlık");
            }

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

            var props = genelÖznitelikServisi.VarlıkİçinÖznitelikleriAl(varlık.Id, keyGroup);

            if (props == null)
            {
                return(default(TPropType));
            }
            props = props.Where(x => x.SiteId == siteId).ToList();
            if (!props.Any())
            {
                return(default(TPropType));
            }

            var prop = props.FirstOrDefault(ga =>
                                            ga.Key.Equals(key, StringComparison.InvariantCultureIgnoreCase));

            if (prop == null || string.IsNullOrEmpty(prop.Value))
            {
                return(default(TPropType));
            }

            return(GenelYardımcı.To <TPropType>(prop.Value));
        }
        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);
                }
            }
        }