Alper Konuralp

Kartınızı Oluşturun
Google+
Follow @alperkonuralp

Archive for the ‘LINQ’ Category

Linq to Sql ile Entity Framework Karşılaştırması

Linq to Sql ile Entity Framework arasındaki farklar hep sorulmuştur. Bugün araştırma yaparken detaylı bir makale buldum. Faydalı olabileceğini düşünerek aşağıda paylaşıyorum :

Flexible Data Access With LINQ To SQL And The Entity Framework : http://bit.ly/eXhnwg

Linq To Sql ile Kalıtım

Linq hayatımıza girdiğinden beri görüş açımız değişti. En azından benim değişti. Önceden çekinerek baktığımız olaylar artık hayatımızın değişmez parçaları oldu. Bugün biraz derinlemesine araştırdığım Linq To Sql tarafındaki kalıtım ile ilgili makalelere ilginizi çekmek istiyorum.

Linq to Sql ile veri tabanından gelen bilgiler .Net nesnelerine dönüştürülmekte. Böylece bu iş için oluşturulmuş gerçek tipli nesneler sayesinde hem performans artışı hemde tip güvenliğine sahip oluyoruz.

Linq to Sql’in kalıtım özellikleri ile aynı tablo içerisinde tutmuş olduğumuz verileri .Net nesneleri haline getirirken bunlar için farklı nesneler oluşturulmasını sağlattırabiliyoruz. İsterseniz bunun için önce basit bir örneği düşünelim. Elimizde personel bilgilerini tutan bir tablo olsun. Bu tablo içindeki bir kolonda departman bilgisi tutulsun. Bu bilgi personelin satış, pazarlama, IT veya Yönetim departmanlarından birinde çalıştığını göstersin. En basit anlamda bu tabloyu Linq To Sql ile nesneler haline dönüştürdükten sonra bütün çalışanları tek bir tip ile ifade edildiğini göreceğiz. Ancak, Linq To Sql’in kalıtım özelliği sayesinde aslında her departman için bir Tip üretip, çekilen veride yer alan departman bilgisine göre bu tiplerden uygun olanın nesnesinin üretilmesini sağlattırabiliriz. İşte bu güzel bir özellik. İleride bununla ilgili daha detaylı bir yazı hazırlayacağım, ancak o zamana kadar aşağıdaki makalelere bir göz atabilirsiniz.

  1. Inheritance in Linq To SQL : http://bit.ly/fvH4lR
  2. Basis of LINQ to SQL: Entity Inheritance : http://bit.ly/f46auC
  3. Linq to SQL Inheritance : http://bit.ly/hPUQMz
  4. How to: Map Inheritance Hierarchies (LINQ to SQL) : http://bit.ly/ffmo4Z
  5. Inheritance in LINQ to SQL (Screencast) : http://bit.ly/eZb8d9

Version Upgrader

Sizde benim gibi versiyon takibi için sürekli assembly.cs dosyasının yolunu tutuyorsanız, benim bu işe bir son vermek amacıyla yazmış olduğum aşağıdaki küçük programcığı kullanmaya başlayabilirsiniz. Amacım parametrede belirtilen dizin ve bütün alt dizinlerindeki assembly.cs dosyalarını bulup, içlerindeki versiyon bilgisinin revision değerini bir arttırmak. İşinize yaraması dileğimle.

Çalışan Versiyonunu indir

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace VersionUpgrader
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length < 1)
            {
                Console.WriteLine("Lütfen arama yapılacak dizini giriniz.");
                return;
            }

            string dizin = args[0];

            var di = new DirectoryInfo(dizin);

            if (di.Exists)
            {
                Console.WriteLine("VersionUpgrader is searching at {0}.", di.FullName);
                FindDirectory(di);
                Console.WriteLine("VersionUpgrader search finished at {0}.", di.FullName);
            }
            else
            {
                Console.WriteLine("Girmiş olduğunuz dizin bulunamadı.");
                return;
            }
        }

        private static readonly Regex rx1 =
            new Regex(
			@"\[assembly: AssemblyVersion\(\""([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\""\)\]",
			RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.Compiled);
        private static readonly Regex rx2 =
            new Regex(
			@"\[assembly: AssemblyFileVersion\(\""([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\""\)\]",
			RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.Compiled);

        private static void FindDirectory(DirectoryInfo di)
        {
            var fid = di.GetFiles("AssemblyInfo.cs");

            if (fid.Length > 0)
            {
                foreach (FileInfo info in fid)
                {
                    var s = File.ReadAllText(info.FullName);

                    var changed = new StringBuilder();

                    s = rx1.Replace(s, x =>
                    {
                        changed.AppendFormat(
						    "AssemblyVersion(\"{0}.{1}.{2}.{3}\" => \"{0}.{1}.{2}.{4}\")",
                            x.Groups[1].Value,
                            x.Groups[2].Value,
                            x.Groups[3].Value,
                            x.Groups[4].Value,
                            (int.Parse(x.Groups[4].Value)) + 1);

                        return string.Format(
                            "[assembly: AssemblyVersion(\"{0}.{1}.{2}.{3}\")]",
                            x.Groups[1].Value,
                            x.Groups[2].Value,
                            x.Groups[3].Value,
                            (int.Parse(x.Groups[4].Value)) + 1);
                    });

                    s = rx2.Replace(s, x =>
                    {
                        if (changed.Length > 0)
                        {
                            changed.Append(" , ");
                        }
                        changed.AppendFormat(
						    "AssemblyFileVersion(\"{0}.{1}.{2}.{3}\" => \"{0}.{1}.{2}.{4}\")",
                            x.Groups[1].Value,
                            x.Groups[2].Value,
                            x.Groups[3].Value,
                            x.Groups[4].Value,
                            (int.Parse(x.Groups[4].Value)) + 1);

                        return string.Format(
                            "[assembly: AssemblyFileVersion(\"{0}.{1}.{2}.{3}\")]",
                            x.Groups[1].Value,
                            x.Groups[2].Value,
                            x.Groups[3].Value,
                            (int.Parse(x.Groups[4].Value)) + 1);
                    });

                    if (changed.Length > 0)
                    {
                        s = string.Format(
						    "{0}\r\n// This file changed by VersionUpgrader at {1:G} << {2} >>",
							s, DateTime.Now, changed);
                    }

                    File.WriteAllText(info.FullName, s);

                    Console.WriteLine("{0} is changed.", info.FullName);
                }
            }

            var did = di.GetDirectories();

            if (did.Length <= 0) return;

            foreach (DirectoryInfo dii in did)
            {
                FindDirectory(dii);
            }
        }
    }
}

Visual Studio 10 ve Microsoft.Net 4.0 Tanıtım Filmleri

Merhaba, Visual Studio 2008 den sonraki VS versiyonu olan Visual Studio 2010 beta sürüm olarak yayınlandı. Acaba yeni neler var diye merak ettiğimde Channel9 da bu konuda uzun soluklu bir Video serisinin bulunduğunu gördüm. Eğer daha önce görmediyseniz bu serinin içindekileri aşağıda link olarak sizlerle paylaşıyorum. Bir bakmanızı tavsiye ederim.

  1. 10-4 Episode 1: Working with the Visual Studio 2010 CTP VPC
  2. 10-4 Episode 2: Welcome to Visual Studio 2010
  3. 10-4 Episode 3: ASP.NET WebForms 4.0
  4. 10-4 Episode 4: No More Parallel Development Pain
  5. 10-4 Episode 5: Code Focused in Visual Studio 2010
  6. 10-4 Episode 6: Parallel Extensions
  7. 10-4 Episode 7: No More Planning Black Box
  8. 10-4 Episode 8: Pure Client-Side Development with ASP.NET AJAX 4.0
  9. 10-4 Episode 9: Visual Basic 10
  10. 10-4 Episode 10: Making Web Deployment Easier
  11. 10-4 Episode 11: Bi-Directional Routing with ASP.NET WebForms 4.0
  12. 10-4 Episode 12: Simplifying Your Code With C# 4.0
  13. 10-4 Episode 13: No More Late Surprises
  14. 10-4 Episode 14: Sentient DSLs
  15. 10-4 Episode 15: Model-First Development with the Entity Framework 4.0
  16. 10-4 Episode 16: Windows Workflow 4
  17. 10-4 Episode 17: F# Intro
  18. 10-4 Episode 18: Functional UI Testing
  19. 10-4 episode 19: Service Discovery with WCF
  20. 10-4 Episode 20: Downloading and Installing Visual Studio 2010 Beta 1
  21. 10-4 Episode 21: Web Tooling Improvements
  22. 10-4 Episode 22: Simplifying Data-Driven Web Applications
  23. 10-4 Episode 23: An Introduction to Manual Testing
  24. 10-4 Episode 24: Monitoring Workflow Services

Entity Framework’te Include Metodu

Entity Framework Lazy Loading üzerinde çalışırken iç içe bağlantılarda problemler çıktı. Load ile çözüm bulamadığım bir anda Include Metodu ile problemim çözüldü.

Yine Northwind veri tabanınından örnek verecek olursak: Products tablosundan veriyi çektik, Order Details tablosuna ulaştık. Oradanda Orders tablosuna ulaşmak gerekiyorsa, Şu tür bir yazım çalışma zamanında hata ile karşılaşacaktır.

var product = DataContext.Products
        .Include("Order_Details")
        .Include("Orders")
        .First( x=> x.ProductID == 10);
var orderDetails = product.Order_Details.ToArray();

Bunun sebebi, Include belirtilen tabloda yer alan Navigation Properties içerisindeki tabloları yükleyebilir. Ama alt tablolardakileri yüklemek gerekiyorsa, o zaman aralarında “.” olacak şekilde, önce üst tablo ismini yazmak, sonrada alt tablo ismini yazmak gerekir. Doğru komut şu şekilde olmalıdır.

var product = DataContext.Products
        .Include("Order_Details")
        .Include("Order_Details.Orders");
        .First( x=> x.ProductID == 10);
var orderDetails = product.Order_Details.ToArray();
İzmir Yazılım Grubu
Google Groups
Subscribe to İzmir Yazılım Grubu
Email:
Visit this group
Mayıs 2012
Pts Sal Çar Per Cum Cts Paz
« Şub    
 123456
78910111213
14151617181920
21222324252627
28293031  
Yeni Downloadlar
StatPress
Visits today: 95
Sahip oldugum diger adresler :
3dmaxtraining.info
3dmaxtrainings.com
3dmaxtrainings.info
adobelearning.info
adobelearnings.info
adobetrainings.com
adobetrainings.info
autocadbootcamp.info
autocadexams.info
autodesklearning.info
autodesklearnings.com
autodesklearnings.info
ciscotrainings.info
egepro.com
elonunbahcesi.com
elonunbahcesi.info
flashbootcamp.info
flashexams.com
flashexams.info
konuralp.biz
konuralp.org
mayatutorial.info
mayatutorials.info
microsoftexams.info
microsofttrainings.info
proege.com
sharepointlearning.info
sharepointlearnings.com
sharepointlearnings.info
sharepointtutorial.info
silverlightbootcamp.info
silverlightlearning.info
silverlightlearnings.info
silverlighttraining.info
silverlighttrainings.com
silverlighttrainings.info
silverlighttutorial.info
silverlighttutorials.info
sirasende.info
urunbul.info
yagmurca.com
yagmurca.info