XDocument (XML) xmlns Nil (Null) Attribute Kaldırma

XML etiketleri içerisindeki xmlns nil(null) attribute(özellikleri) kaldırmak için aşağıdaki işlemler uygulanır.

  1. Öncelikle tüm alt etiketler Descendants() ile listelenir.
  2. Daha sonra etiketler içerisinde nil(null) olan öznitelikli etiketler listelenir.
  3. Nil(null) özniteliği(attribute) etiket içerisinden RemoveAttributes() metodu ile kaldırılır.
XDocument xDoc = XDocument.Load("D:\file.xml");

XNamespace i = "http://www.w3.org/2001/XMLSchema-instance";
xDoc.Descendants()
    .Where(node => (string)node.Attribute(i + "nil") == "true")
    .ToList().ForEach(o => o.RemoveAttributes());
Reklamlar

XDocument (XML) xmlns Attribute Kaldırma

XML etiketleri içerisindeki xmlns attribute(özellikleri) dönüştürme işleminde sorunlara yol açabilmektedir.

  1. Öncelikle tüm alt kolesiyonlar Descendants() ile listelenir.
  2. Daha sonra tüm etiketlerin tüm öznitelikleri(attribute) Attributes() ile listelenir.
  3. İçerisinde namesapce tanımlanmış etiketleri filtreleyerek Remove() metodu ile kaldırılır.
XDocument xDoc = XDocument.Load("D:\file.xml");

xDoc.Descendants()
    .Attributes()
    .Where(x => x.IsNamespaceDeclaration)
    .Remove();

Visual Studio 2017 ISO İndirme / Oluşturma

Visual Studio 2017 İndirme Adresleri


Visual Studio 2017’nin aşağıdaki sürümlerinden herhangi birini doğrudan Microsoft sunucularından indirebilirsiniz:

Version Web Installer ISO
Visual Studio Community 2017 Download Download
Visual Studio Enterprise 2017 Download Download
Visual Studio Professional 2017 Download Download
Visual Studio Test Professional 2017 Download Download
Visual Studio Community 2017 RC Download Download
Visual Studio Professional 2017 RC Download Download
Visual Studio Enterprise 2017 RC Download Download
Team Foundation Server 2017 RC Download Download

 

Visual Studio 2017 ISO Dosyası Oluşturma


Visual Studio Web Installer yürütülebilir dosyasını yerel makinedeki bir sürücüye yukarıdaki bağlantılardan indirin.

  1. Visual Studio kurulumunun yürütülebilir dosyasını bir komut satırından aşağıdaki bağımsız değişkenlerle çalıştırın: Örneğin, topluluk baskısı web yükleyicisini indirdiyseniz.
    vs_community.exe --layout "download-path" --lang "download-language"
  2. Örnek 1: Tüm dillerle yükleyin
    vs_community.exe --layout C:\vs2017
  3. Örnek 2: Sadece bir dil için yükleyim
    vs_community.exe --layout C:\vs2017 --lang en-US
  4. Örnek 3: Birden çok dili yükleyin
    vs_community.exe --layout C:\vs2017 --lang en-US tr-TR de-DE

Şu anda doğrudan indirilebilecek resmi bir ISO mevcut değildir. Tek seçenek, web yükleyicisini indirmek ve çevrimdışı yükleme medyasını almak için bir düzen yapmak.

 

Yükleme Dosyalarını Güncelleme


Yükleme dosyalarını güncellemek için --layout komutunu tekrar çalıştırabilirsiniz. İndirme işlemleri bittiğinde yeni dosyalar indirilmiş olacaktır.

 

Okumaya devam et

MySQL Entity Freamwork – System.Data.StrongTypingException: The value for column ‘IsPrimaryKey’ in table ‘TableDetails’ is DBNull Hatası

Merhabalar,

Bir projemde Entity Freamwork ile MySQL veritabanı kullanıyordum. Entity Framework (version 6.2.0) ve MySQL Server (>= 5.7.6) versiyon yükseltmesi yaptığımda “System.Data.StrongTypingException: The value for column ‘IsPrimaryKey’ in table ‘TableDetails’ is DBNull” hatası ile karşılaştım.

Küçük araştırmalar sonucunda MySQL tarafından kullanılan sorgu optimazasyonu ayarından kaynaklandığını buldum. Hata bildirimi: https://bugs.mysql.com/bug.php?id=79163.

 
Aşağıdaki adımları uyguladığımda sorun giderildi.

  1. Hizmetleri Açın (services.msc) açın ve MySQL57 servisini yeniden başlatın.
  2. MySQL konsol (MySQL commond line) açınız ve aşağıdaki satırları çalıştırınız.
    • use ‘veritabani_adi’;
    • set global optimizer_switch=’derived_merge=OFF’;
  3. Eğer EF’yi database first olarak kullanıyorsanız projenizde .edmx ‘i güncelleyiniz.

MSSQL Gruplanmış Verileri Tek Satırda Birleştirme

Merhabalar,

SQL içinde bazı verileri birleştirmemiz (concatenate) gerekebilir. MSSQL de bulunan bir işlem bunun için biçilmiş kaftandır.

Örn: Bir tabloda bir kullanıcıya ait birden fazla e-posta adresi bulunabilir. Bu e-postaları “UserID” bazında gruplayarak e-posta adreslerini bir karakter ile birleştirmek istenilebilir.

2 – kaan1@test.com; kaan2@test.com

 
Bu sorgu ile aynı kullanıcıya ait e-postaları “; “ karakteri ile birleştirebiliriz.

DECLARE @EMailAdress TABLE
(
	ID INT,
	UserID INT,
	EMail nvarchar(50)
)

INSERT INTO @EMailAdress VALUES
(1, 12, 'test_01@test.com'),
(2, 13, 'test_02@test.com'),
(3, 13, 'test_03@test.com'),
(4, 14, 'test_04@test.com'),
(5, 15, 'test_05@test.com'),
(6, 16, 'test_06@test.com')

SELECT
	EMA1.UserID,
    STUFF((SELECT '; ' + EMA2.EMail
            FROM @EMailAdress AS EMA2
            WHERE EMA1.UserID = EMA2.UserID
            FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, ''
		) AS EMail
FROM @EMailAdress AS EMA1
GROUP BY EMA1.UserID

 
Aynı yöntemin farklı bir şekilde kullanımı;

DECLARE @EMailAdress TABLE
(
	ID INT,
	UserID INT,
	EMail nvarchar(50)
)

INSERT INTO @EMailAdress
SELECT 1, 12, 'test_01@test.com'
UNION SELECT 2, 13, 'test_02@test.com'
UNION SELECT 3, 13, 'test_03@test.com'
UNION SELECT 4, 14, 'test_04@test.com'
UNION SELECT 5, 15, 'test_05@test.com'
UNION SELECT 6, 16, 'test_06@test.com';

WITH TT AS
(
  SELECT UserID FROM @EMailAdress
  GROUP BY UserID
)

SELECT
	TT.UserID,
	STUFF((SELECT '; ' + EMail
			FROM @EMailAdress WHERE UserID = TT.UserID
			FOR XML PATH('')), 1, 1, ''
		) AS EMail
FROM TT;

 

// Sonuçlar:
ParentID EMail
12	 test_01@test.com
13	 test_02@test.com; test_03@test.com
14	 test_04@test.com
15	 test_05@test.com
16	 test_06@test.com

Bir Nesneyi URL QueryString Olarak Serileştirme – ASP.NET

Merhabalar,

Bazı zamanlarda nesneler URL QueryString dizesi haline getirilmesi gereklidir. Aşağıdaki metot ile bir nesne QueryString dizesine çevrilir.

 
Bir nesnenin URL QueryString bölümünü oluşturur.

public string ToQueryString(this object obj)
{
    var properties = from p in obj.GetType().GetProperties()
                        let val = p.GetValue(obj, null)
                        where val != null
                        select p.Name + "=" + HttpUtility.UrlEncode(val.ToString());

    return string.Join("&", properties.ToArray());
}

 
Extension metot halinde kullanılmasını sağlar.

public static class ExtensionMethods
{
    public static string ToQueryString(this object obj)
    {
        var properties = from p in obj.GetType().GetProperties()
                            let val = p.GetValue(obj, null)
                            where val != null
                            select p.Name + "=" + HttpUtility.UrlEncode(val.ToString());

        return string.Join("&", properties.ToArray());
    }
}


// Usage:
var model = new Model()
{
    ID = 1,
    ParentID = null,
    Search = "text",
    IsActive = false
};

string queryString = model.ToQueryString();
// Result: "ID=1&Search=text&IsActive=False"

MySQL Ülkeler ve Türkiye İl, İlçe, Bölge, Posta Kodu ve Mahalle Veritabanı – 2018 Güncel

Merhabalar arkadaşlar,

2017 yılında burada MySQL için oluşturmuş olduğum veritabanını 2018 yılı için güncellemiş bulunmaktayım.

Ülkeler ve Türkiye İl, İlçe, Mahalle veritabanlarını PTT’nin yayınladığı 2018 yılının Ağustos ayına ait yeni listeye göre düzenledim. Bu düzenlemeyi MySQL 5.7.19 sürümü üzerinde yaptım ve buna göre bir script dosyası oluşturdum.

Bu script dosyasına buradan ulaşabilirsiniz.

Eğer başka sürümler içinde isterseniz benimle iletişime geçebilir ya da yoruma yazabilirsiniz.

Kolay gelsin hepinize şimdiden.