Özgür Özvarış

Bir yazılımcının kırık dökük dünyası

mssql foreign key list

clock Kasım 28, 2013 16:57 by author OzgurOzvaris

Kaynak : http://stackoverflow.com/questions/483193/how-can-i-list-all-foreign-keys-referencing-a-given-table-in-sql-server-2005

 

select t.name as TableWithForeignKey, fk.constraint_column_id as FK_PartNo , c.name as ForeignKeyColumn 
from sys.foreign_key_columns as fk
inner join sys.tables as t on fk.parent_object_id = t.object_id
inner join sys.columns as c on fk.parent_object_id = c.object_id and fk.parent_column_id = c.column_id
--where fk.referenced_object_id = (select object_id from sys.tables where name = 'TableOthersForeignKeyInto')
order by TableWithForeignKey, FK_PartNo

 yada

select distinct name from sys.objects where object_id in 
(   select fk.constraint_object_id from sys.foreign_key_columns as fk
    --where fk.referenced_object_id =   	(select object_id from sys.tables where name = 'TableOthersForeignKeyInto')
)

ikisini harmanlarsak

select t.name as TableWithForeignKey, fk.constraint_column_id as FK_PartNo , c.name as ForeignKeyColumn , s.name
from sys.foreign_key_columns as fk
inner join sys.objects as s on s.object_id = fk.constraint_object_id
inner join sys.tables as t on fk.parent_object_id = t.object_id
inner join sys.columns as c on fk.parent_object_id = c.object_id and fk.parent_column_id = c.column_id
--where fk.referenced_object_id = (select object_id from sys.tables where name = 'TableOthersForeignKeyInto')
order by TableWithForeignKey, FK_PartNo


jquery noconflict

clock Kasım 19, 2013 16:48 by author OzgurOzvaris

Değerli arkadaşlar,

Yaptığım bir uygulamada daha önce kullanmış prototype.js kütüphanesi ile jquery dialog methodunun çakıştığını tecrübe ettim. Bu nedenle bir türlü dialogbox açılmıyordu.

Eğer sizde böyle bir sorunla karşılaşırsanız bana şu kod parçası yardımcı oldu sizede yardımcı olabilir diye paylaşıyorum.

$(document).ready(function () {
    var J = jQuery.noConflict();
	
	J("#dvMove1").dialog({
        autoOpen: true,
        modal: true,
        width: 690,
        show: { effect: "blind", duration: 1000 },
        hide: { effect: "explode", duration: 1000 },
        open: function () {
            //$('.ui-dialog-titlebar').hide();
            jQuery('.ui-widget-overlay').bind('click', function () {
                jQuery('#dvMove1').dialog('close');
            });
            //window.setInterval('$(\'#dvMove1\').dialog(\'close\');', 10000);
        }
    });
});

Herkese Selamlar. 



ie10 iis 7.5 session problemi

clock Ekim 24, 2013 19:46 by author OzgurOzvaris

Değerli Arkadaşlar,

Kaynak

http://stackoverflow.com/questions/6983732/ie10-user-agent-causes-asp-net-to-not-send-back-set-cookie-ie10-not-setting-coo

Başlıktanda anlaşılacağı üzere ie10 da çalışırken uygulamanıza ait session problemleri yaşayabilirsiniz.

Böyle bir durumda en kestirme yok aşağıdaki patch'i server'ınıza kurmak

http://connect.microsoft.com/VisualStudio/feedback/details/662275/asp-net-user-agent-sniffing-and-ie10-internet-explorer-10

İyi çalışmalar.



Çok adetli dosya Silme

clock Eylül 19, 2013 10:40 by author OzgurOzvaris

Değerli Arkadaşlar,

kaynak

http://stackoverflow.com/questions/1965787/how-to-delete-files-subfolders-in-a-specific-directory-at-command-prompt-in-wind

Dosya silme deyip geçmeyin.

Sunucularınızda çok adetli dosyaları silmek için shift delete deme gafletinde sakın bulunmayın.

Ciddi manada sunucuyu kitlediği yetmiyor gibi üstüne üstük bir de explorer.exe işlem sonucunda vazgeçseniz dahi şişmiş bir vaziyette kalıyor. Explorer'ı kapattığım halde ancak log out olarak explorer'ı normal haline getirebildi.

Bu kitlenme anında sadece remote desktop kitlenmiyor aynı zamanda sistemide kitliyor bütün web servislerimiz cevap veremez hale geldi.

Sonuç: eğer çok adetli dosya silecekseniz eski dos komutu olan RMDIR çok işinize yaracak.

kullanım şekli

RMDIR \"FOLDERNAME" /S /Q

Not : doğru folder olduğuna dikkat etmeyi unutmayın...

 



Aspx te tüm kullanıcıların session verilerini okumak

clock Ağustos 30, 2013 17:55 by author OzgurOzvaris

Değerli arkadaşlar,

Bütün session verisi üzerinde işlem yapmanız gerekebilir. Bu konu ile ilgili güzel bir çalışma buldum.

Önce Kaynak

http://weblogs.asp.net/imranbaloch/archive/2010/04/05/reading-all-users-session.aspx

Aslında kaynak çok güzel anlatmış. Okumak istediğiniz session verisi için

object obj = typeof(HttpRuntime).GetProperty("CacheInternal", BindingFlags.NonPublic | BindingFlags.Static).GetValue(null, null);
object[] obj2 = (object[])obj.GetType().GetField("_caches", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(obj);
for (int i = 0; i < obj2.Length; i++)
{
    Hashtable c2 = (Hashtable)obj2[i].GetType().GetField("_entries", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(obj2[i]);
    foreach (DictionaryEntry entry in c2)
    {
        object o1 = entry.Value.GetType().GetProperty("Value", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(entry.Value, null);
        if (o1.GetType().ToString() == "System.Web.SessionState.InProcSessionState")
        {
            SessionStateItemCollection sess = (SessionStateItemCollection)o1.GetType().GetField("_sessionItems", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(o1);
            if (sess != null)
            {
                if (sess["User"] != null)
                {
                    Label1.Text += sess["User"] + " is Active.<br>";
                }
            }
        }
    }
}

Vb için 

Dim obj As Object = GetType(HttpRuntime).GetProperty("CacheInternal", BindingFlags.NonPublic Or BindingFlags.Static).GetValue(Nothing, Nothing)
Dim obj2 As Object() = DirectCast(obj.GetType().GetField("_caches", BindingFlags.NonPublic Or BindingFlags.Instance).GetValue(obj), Object())
For i As Integer = 0 To obj2.Length - 1 Step 1
    Dim c2 As Hashtable = DirectCast(obj2(i).GetType().GetField("_entries", BindingFlags.NonPublic Or BindingFlags.Instance).GetValue(obj2(i)), Hashtable)
    For Each entry As DictionaryEntry In c2
        Dim o1 As Object = entry.Value.GetType().GetProperty("Value", BindingFlags.NonPublic Or BindingFlags.Instance).GetValue(entry.Value, Nothing)
        If o1.GetType().ToString() = "System.Web.SessionState.InProcSessionState" Then
            Dim sess As SessionStateItemCollection = DirectCast(o1.GetType().GetField("_sessionItems", BindingFlags.NonPublic Or BindingFlags.Instance).GetValue(o1), SessionStateItemCollection)

            If Not sess Is Nothing Then
                If Not sess("User") Is Nothing Then
                    //Label1.Text = sess("User")
                End If
            End If

        End If

    Next
Next

Kodda gözüktüğü üzere bütün kullanıcıların Session daki User datalarını listeleyebiliyoruz.

 İyi çalışmalar.



MSSQL tablo kolon uzunluğunu değiştirmek

clock Nisan 16, 2013 10:31 by author OzgurOzvaris

Değerli arkadaşlar,

Enterprise Manager ile bir tabloyu düzenle deyip alanın uzunluğu artırmaya kalkarsanız bütün tabloyu bir temp tabloya atmak gibi uzun bir yoldan gittiğini göreceksiniz. Biraz basit bir bilgi ama bunuda kayıt altına alalım dedim.

Kaynak

Changing the size of a column in SQL Server

ALTER TABLE [dbo].[Address] 
ALTER COLUMN [Addr1] [nvarchar](80) NULL

Eğer bu işlem esnasında şöyle bir hata alırsanız

The object 'Address_e' is dependent on column 'Addr1'.
ALTER TABLE ALTER COLUMN Addr1 failed because one or more objects access this column.

SCHEMABINDING özelliğinden kaynaklandığından bahsediliyor.

İyi çalışmalar.

 



c# Mapping class

clock Nisan 16, 2013 10:25 by author OzgurOzvaris

Değerli arkadaşlar,

Bazen bir klasın içeriğini başka bir klass içine aktarmak isteyebilirsini. Bu işleme mapping deniyor. Özellikle katmanlı mimaride çokça kullandığımız bir ihtiyaç. Piyasada bir çok mapping toolları mevcut bunlardan bir kaçı structeremap, automapper gibi toolar sayılabilir. Aslında bu mapping işleminin temeli çok basit bir mantıkla başlıyor. Buna bir örnek olması amacı ile güzel bir kod parçasını sizlerle paylaşacağım.

Kaynak :

http://www.buraksenyurt.com/post/Tek-Fotoluk-Ipucu-99-Tipler-Arasi-Property-Eslestirme.aspx

http://stackoverflow.com/questions/3348634/automapper-and-inheritance-how-to-map

public static class TypeExtensions
    {
        public static void MapTo<T, S>(this S source, T target)
        {
            Type sourceType = source.GetType();
            Type targetType = target.GetType();

            var sourceProperties = sourceType.GetProperties();
            var targetProperties = targetType.GetProperties();

            for (int i = 0; i < sourceProperties.Length; i++)
            {
                var currentProperty = sourceProperties[i];
                var targetProperty = targetProperties
                    .FirstOrDefault(p => p.Name == currentProperty.Name);
                if (targetProperty != null)
                    targetProperty.SetValue(target, currentProperty.GetValue(source, null), null);
            }

        }
    
    }

 

 



C# String enums

clock Nisan 4, 2013 12:09 by author OzgurOzvaris

Değerli arkadaşlar,

Bir enum değer içinde char ve integer değerler saklanabiliyor ve geri alınabiliyor. Şimdi vaktimin darlığından bunun örneklerini yazmayacağım. Burada asıl ihtiyacımız olan şey bir enum değere bağlı string değer saklamak istersek ne yapmamız gerektiği. İlginç bir yöntem buldum. Sizlerle paylaşayım dedim.

Kaynaklar

C# String enums

Typesafe Enum

Conversion Operators

Using Conversion Operators

public sealed class enmCompanyType
    {

        private readonly String name;
        private readonly string value;
        private static readonly Dictionary<string, enmCompanyType> instance = new Dictionary<string, enmCompanyType>();


        public static readonly enmCompanyType Agency = new enmCompanyType("ACT", "Agency");
       
        private enmCompanyType(string value, String name)
        {
            this.name = name;
            this.value = value;

            instance.Add(name, this);
        }

        public override String ToString()
        {
            return name;
        }

        public string Value
        {
            get
            {
                return value;
            }
        }

        public static explicit operator enmCompanyType(string str)
        {
            enmCompanyType result;
            if (instance.TryGetValue(str, out result))
                return result;
            else
                throw new InvalidCastException();
        }

    }

 

Herkese iyi çalışmalar.

 

 



WCF Custom Context

clock Nisan 2, 2013 15:52 by author OzgurOzvaris

Değerli Arkadaşlar,

Eski alışkanlıklar kolay bırakılmıyor.Smile Eğer sizde böyle düşünüyor ve wcf niz içinde eskiden olduğu gibi herhangi bir class library altında Httpcontext.Curent.Session["Parameter"] kullanmak isterseniz bu yöntem hoşunuza gidecektir. HttpContext benzeri bir custom context yapısı kuracağız ve bunu wcf'imize bağlayacağız.

Tabiki Kaynak

http://hyperthink.net/blog/a-simple-ish-approach-to-custom-context-in-wcf/ 

Öncelikle bir MyContext classı oluşturun bu classınproje içinde  her yerden görünmesi gerekiyor.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

namespace Infrastructure
{
    public class MyContext : IExtension<OperationContext>
    {

        //The "current" custom context

        public static MyContext Current
        {

            get { return OperationContext.Current.Extensions.Find<MyContext>(); }

        }



        #region IExtension<OperationContext> Members



        public void Attach(OperationContext owner)
        {

            //no-op

        }



        public void Detach(OperationContext owner)
        {

            //no-op

        }

        #endregion



        object contextProperty1;



        //You can have lots more of these -- this is the stuff that you 

        //want to store on your custom context

        public object ContextProperty1
        {

            get { return this.contextProperty1; }

            set { this.contextProperty1 = value; }

        }

    }
}

Şimdi geri kalan kodları wcf inizi görmesi yeterli.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ServiceModel;
using System.ServiceModel.Dispatcher;
using System.ServiceModel.Description;
using System.ServiceModel.Channels;


namespace WcfServiceLib
{
    

    public class MyContextMessageInspector : IDispatchMessageInspector
    {

        public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request,
                                          IClientChannel channel,
                                          InstanceContext instanceContext)
        {

            OperationContext.Current.Extensions.Add(new MyContext());

            return request.Headers.MessageId;

        }



        public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
        {

            OperationContext.Current.Extensions.Remove(MyContext.Current);

        }

    }

    public class MyContextBehaviorAttribute : Attribute, IServiceBehavior
    {

        #region IServiceBehavior Members



        public void AddBindingParameters(ServiceDescription serviceDescription,

                                         ServiceHostBase serviceHostBase,

                                         System.Collections.ObjectModel.Collection<ServiceEndpoint> endpoints,

                                         BindingParameterCollection bindingParameters)
        {

            //no-op

        }



        public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
        {

            foreach (ChannelDispatcher cd in serviceHostBase.ChannelDispatchers)
            {

                foreach (EndpointDispatcher ed in cd.Endpoints)
                {

                    ed.DispatchRuntime.MessageInspectors.Add(new MyContextMessageInspector());

                }

            }

        }



        public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
        {

            //no-op            

        }

        #endregion

    }

   }

Yukarıda bölümde MyContexti bir attribute ile wcf clasımıza uygulayabilir hale getirdik. Şimdi onu uyguluyoruz.

[ServiceContract]

    [MyContextBehavior]

    public class MySerivce
    {

        [OperationContract]

        public string DoStuff(string foo)
        {

            //Use MyContext.Current here to do something interesting...

            MyContext.Current.ContextProperty1 = "test";

        }

    }

Şimdi artık MyContext.Current.ContextProperty1 değerini projenin her yerinden alabilirsiniz.

 

Herkese iyi çalışmalar.



WCF servisinize IOC Container ekleme

clock Nisan 2, 2013 12:29 by author OzgurOzvaris

Değerli arkadaşlar,

Önce Kaynaklar

http://www.dimecasts.net/Casts/CastDetails/150

Episode150_WCF_AddingIoCSupportToYourServices.zip (374,68 kb)

 

Bildiğiniz üzere dependecy injection diye bir yazılım kavramı. Bu kavramı kolay uygulayabilmemiz için IOC Containerlar kullnılıyor. Bu IOC containerlardan biride StructerMap isimli bir IOC Container.

Hani olurda Web servisinizden kullanığınız metodu da abstract etmek isterseniz WCF servinizin içinde kulanılan metodu sürecin içine katabilmemiz için WCF bunu destekleyecek mekanizmalırı oluşturmuş. Yapmamız gereken WCF ile staracturemap arasında bir bağlantı oluşturup keyfimize bakmak.

Ör :

public class PatientEligibilityService : IPatientEligibilityService
    {

        public bool IsPatientEligibleForGoodCare(Patient patient)
        {
            var specification = ObjectFactory.GetInstance<IPatientEligibleForGoodCareSpecification>();

            return Specification.IsSatisfiedBy(patient);
        }

        
    }

Bir webservis metodunuda sürekli olarak Specification classının StaractureMap in factory metodu olan GetInstance metodu ile üretmek istemezseniz. Yani

public class PatientEligibilityService : IPatientEligibilityService
    {
        public IPatientEligibleForGoodCareSpecification Specification { get; set; }

        public PatientEligibilityService( IPatientEligibleForGoodCareSpecification specification )
        {
            Specification = specification;
        }

        public bool IsPatientEligibleForGoodCare(Patient patient)
        {
            //var specification = ObjectFactory.GetInstance<IPatientEligibleForGoodCareSpecification>();

            return Specification.IsSatisfiedBy(patient);
        }


       
    }

Bu şekilde kullanmak isterseniz verdiğim kaynakları dikkatlice inceleyin.

 

İyi çalışmalar.

 



Hakkımızda  AboneOl 

Blog Yayınımıza Hoşgeldiniz.

Month List

RecentPosts

Sign In