ASP.NET – SQL Data Source Kullanarak Kodsuz CRUD İşlemleri – 2

Bu ikinci bölümde, ASP.NET – SQL Data Source Kullanarak Kodsuz CRUD İşlemleri – 1 makalesinde kaldığımız yerden devam ederek, İlişkili tablolarda kod yazmadan nasıl CRUD işlemlerini gerçekleştirebileceğimizi göstereceğim. SQL veritabanındaki tablo yapımızı aşağıdaki gibi yapıyoruz.. (PrimaryKey kolonları IDENTITY yapmayı unutmayın !)

Veritabanı Diyagramı;

Veritabanı Diyagram

WebForm üzerindeki GridView kontrolümüz şu şekilde değişecektir.

kmb-udemy-reklam

Tasarım Görünümü;

WebForm Görüntüsü

WebForm ASP.NET Kaynak Kodu;

<asp:SqlDataSource ID=”sdsUserTable2″ runat=”server” ConnectionString=”” DeleteCommand=”DELETE FROM [UserTable2] WHERE [ID] = @ID”
InsertCommand=”INSERT INTO [UserTable2] ([Name], [Surname], [Phone], [CityID]) VALUES (@Name, @Surname, @Phone, @CityID)”
SelectCommand=”SELECT * FROM [UserTable2] ORDER BY [Name], [Surname]” UpdateCommand=”UPDATE [UserTable2] SET [Name] = @Name, [Surname] = @Surname, [Phone] = @Phone, [CityID] = @CityID WHERE [ID] = @ID”>
<asp:ControlParameter ControlID=”GridView1″ DefaultValue=”-1″ Name=”ID” PropertyName=”SelectedValue”
Type=”Int32″ />
<asp:ControlParameter ControlID=”GridView1″ DefaultValue=”—“ Name=”Name” PropertyName=”SelectedValue”
Type=”String” />
<asp:ControlParameter ControlID=”GridView1″ DefaultValue=”—“ Name=”Surname” PropertyName=”SelectedValue”
Type=”String” />
<asp:ControlParameter ControlID=”GridView1″ DefaultValue=”123456″ Name=”Phone” PropertyName=”SelectedValue”
Type=”String” />
<asp:ControlParameter ControlID=”GridView1″ DefaultValue=”1″ Name=”CityID” PropertyName=”SelectedValue”
Type=”Int32″ />
<asp:ControlParameter ControlID=”GridView1″ DefaultValue=”-1″ Name=”ID” PropertyName=”SelectedValue”
Type=”Int32″ />
<asp:SqlDataSource ID=”sdsCityTable” runat=”server” ConnectionString=”” SelectCommand=”SELECT * FROM [CityTable] ORDER BY [CityName]”>
<asp:GridView ID=”GridView1″ runat=”server” AutoGenerateColumns=”False” CellPadding=”4″
DataKeyNames=”ID” DataSourceID=”sdsUserTable2″ EnableModelValidation=”True” ForeColor=”#333333″
ShowFooter=”True”>
<asp:CommandField HeaderText=”??lemler” ShowDeleteButton=”True” ShowEditButton=”True”
ShowSelectButton=”True” />
<asp:BoundField DataField=”ID” HeaderText=”ID” InsertVisible=”False” ReadOnly=”True”
SortExpression=”ID” Visible=”False” />
<asp:TextBox ID=”TextBox1″ runat=”server” Text=”>
<asp:LinkButton ID=”lnkYeni” runat=”server” Font-Size=”Small” ForeColor=”White” onclick=”lnkYeni_Click”>Yeni

<asp:Label ID=”Label1″ runat=”server” Text=”>
<asp:BoundField DataField=”Surname” HeaderText=”Soyad” SortExpression=”Surname” />
<asp:DropDownList ID=”DropDownList3″ runat=”server” DataSourceID=”sdsCityTable” DataTextField=”CityName”
DataValueField=”ID” Height=”22px” SelectedValue=” Width=”100px”>
<asp:DropDownList ID=”DropDownList2″ runat=”server” DataSourceID=”sdsCityTable” DataTextField=”CityName”
DataValueField=”ID” Enabled=”False” Height=”22px” SelectedValue=” Width=”100px”>

WebForm VB Kaynak Kodu;

Partial Class Default2
Inherits System.Web.UI.Page
Protected Sub lnkYeni_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Me.sdsUserTable2.Insert()
End Sub
End Class

Kullanım Görünümü;

img3

img4

Burada yaptığımız şeyi kısaca özetlersek;

Şehir kolonunu veritabanın’da Kullanıcı tablosunda bir sayı kolonu olarak tutuyoruz ve bu kolon bir sayı içeriyor. İçerdiği sayının karşılığı şehir adı ise, şehir tablosunda tutuluyor. Kullanıcı ile şehir tablosu arasında bir ilişki mevcut. Bu ilişki sayesinde yukarıdaki görüntüdeki gibi Kullanıcı tablosunda şehir bilgisini kullanıcıya bir liste olarak gösterebiliriz. Böylece kullanıcı buraya yanlış bir bilgi giremez ve var olmayan bir bilgide giremez. Bu bize kullanıcının hata yapmasını kısıtladığı gibi, ilgili kolona ne veri girmesi gerektiğini de gösterir.

kmb-udemy-reklam

ASP.NET – SQL Data Source Kullanarak Kodsuz CRUD İşlemleri – 1

ASP.NET ‘de SQL Data Source Nesnesi ile kod yazmadan bir SQL veritabanı tablosu üzerinde SELECT (veri listeleme) , INSERT (veri ekleme), UPDATE (veri güncelleme), DELETE (veri silme) işlemlerinin nasıl yapılacağını anlatıyorum..

http://content.screencast.com/users/MaviSeffaf/folders/Default/media/ea82caca-fa65-4831-bdfb-f9d7363b0a19/mp4h264player.swf

Videoyu indir !

Dizayn :

Ekran Alıntısı

Kaynak Kod :

    <asp:SqlDataSource ID="sdsUserTable" runat="server" ConnectionString="" DeleteCommand="DELETE FROM [UserTable] WHERE [ID] = @ID"
        InsertCommand="INSERT INTO [UserTable] ([Name], [Surname], [Phone], [City]) VALUES (@Name, @Surname, @Phone, @City)"
        SelectCommand="SELECT * FROM [UserTable] ORDER BY [Name], [Surname]" UpdateCommand="UPDATE [UserTable] SET [Name] = @Name, [Surname] = @Surname, [Phone] = @Phone, [City] = @City WHERE [ID] = @ID">
        <asp:ControlParameter ControlID="GridView1" DefaultValue="-1" Name="ID" PropertyName="SelectedValue"
            Type="Int32" />
        <asp:ControlParameter ControlID="GridView1" DefaultValue="" Name="Name" PropertyName="SelectedValue"
            Type="String" />
        <asp:ControlParameter ControlID="GridView1" Name="Surname" PropertyName="SelectedValue"
            Type="String" />
        <asp:ControlParameter ControlID="GridView1" Name="Phone" PropertyName="SelectedValue"
            Type="String" />
        <asp:ControlParameter ControlID="GridView1" Name="City" PropertyName="SelectedValue"
            Type="String" />
        <asp:ControlParameter ControlID="GridView1" DefaultValue="-1" Name="ID" PropertyName="SelectedValue"
            Type="Int32" />
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False"
            Caption="Ki?iler" CellPadding="4" DataKeyNames="ID" DataSourceID="sdsUserTable"
            EmptyDataText="Kay?t yok.." EnableModelValidation="True" ForeColor="#333333"
            HorizontalAlign="Center" PageSize="2" ShowFooter="True">
            <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" />
            <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True"
                SortExpression="ID" Visible="False" />
            <asp:BoundField DataField="Surname" HeaderText="Surname" SortExpression="Surname" />
            <asp:TextBox ID="TextBox1" runat="server" Text=''>
                <asp:LinkButton ID="lnkYeni" runat="server" ForeColor="White" onclick="lnkYeni_Click">Yeni                                                               
<asp:Label ID="Label1" runat="server" Text=''>

ADO.NET Entity Framework – CRUD İşlemleri ve Alternatif Yollar

ADO.NET Entity Framework ile Select, Insert, Update, Delete işlemlerini nesneler üzerinden kolayca yapabiliyoruz. Bu konu hakkında bir sürü makale yazılmış.. Bu makaleleri okuyarak detaylarını öğrenebilirsiniz. Benim burada paylaşmak istediğim, CRUD işlemlerini yapan kod kalıplarıdır. Bir form üzerinde bu kodları test edebilirsiniz..

Form1.vb

Public Class Form1

 

    Private _Entity As MyEntity.Entities

    Public Property Entity() As MyEntity.Entities

        Get

            Return _Entity

        End Get

        Set(ByVal value As MyEntity.Entities)

            _Entity = value

        End Set

    End Property

 

    Private _MyRandom As New Random

    Public Property MyRandom() As Random

        Get

            Return _MyRandom

        End Get

        Set(ByVal value As Random)

            _MyRandom = value

        End Set

    End Property

 

 

    ”’

    ”’ Entity instance oluşturur.

    ”’

    ”’

    ”’

    Private Function GetEntityInstance() As MyEntity.Entities

        If (Me.Entity Is Nothing) Then _

            Me.Entity = New MyEntity.Entities

 

        Return Me.Entity

    End Function

 

 

    Private Sub GetList(ByVal startWith As Char)

        Dim entity As MyEntity.Entities = Me.GetEntityInstance()

        Dim str As String = startWith.ToString()

 

        Dim locations = From l In entity.Location _

                        Where l.Name.StartsWith(str) _

                        Select l

 

        Me.DataGridView1.DataSource = locations

    End Sub

 

    Private Sub GetList()

        Dim entity As MyEntity.Entities = Me.GetEntityInstance()

 

        Dim locations = From l In entity.Location _

                        Select l

 

        Me.DataGridView1.DataSource = locations

 

 

        ” // *********************************************//

        ” // ALTERNATİF                                   //

        ” // *********************************************//

 

        ‘Using entity As New MyEntity.Entities

 

        ‘    Dim locations = From l In entity.Location _

        ‘                    Select l

 

        ‘    Me.DataGridView1.DataSource = locations

 

        ‘End Using

 

    End Sub

 

    Private Sub InsertLocation()

 

        ” // *********************************************//

        ” // ALTERNATİF                                   //

        ” // *********************************************//

 

        ‘Using entity As New MyEntity.Entities

 

        ‘    Dim newObject As New MyEntity.Location

        ‘    newObject.ModifiedDate = DateTime.Now.Date

        ‘    newObject.Name = “F” & “_Yeni_” & Me.MyRandom.Next(0, 250).ToString()

        ‘    newObject.CostRate = 0

        ‘    newObject.Availability = 1

 

        ‘    entity.AddToLocation(newObject)

        ‘    entity.SaveChanges()

 

        ‘End Using

 

 

        ” // *********************************************//

        ” // ALTERNATİF                                   //

        ” // *********************************************//

 

        Dim entity As MyEntity.Entities = Me.GetEntityInstance()

 

        Dim newobject As New MyEntity.Location

        newobject.ModifiedDate = DateTime.Now.Date

        newobject.Name = “f” & “_yeni_” & Me.MyRandom.Next(0, 250).ToString()

        newobject.CostRate = 0

        newobject.Availability = 1

 

        entity.AddToLocation(newobject)

        entity.SaveChanges()

 

    End Sub

 

    Private Sub DeleteLocation(ByVal id As Integer)

 

        ” // *********************************************//

        ” // ALTERNATİF                                   //

        ” // *********************************************//

 

        ” Item Primary key kolonu değerine göre elde edilir.

       

        ‘Dim key As New EntityKey(“Entities.Location”, _

        ‘                         New KeyValuePair(Of String, Object)() _

        ‘                            { _

        ‘                                New KeyValuePair(Of String, Object)(“LocationID”, CType(id, Int16)) _

        ‘                            })

 

        ‘Dim location As MyEntity.Location = Me.Entity.GetObjectByKey(key)

 

        ‘If (location IsNot Nothing) Then

        ‘    Me.Entity.Location.Context.DeleteObject(location)

        ‘    Me.Entity.SaveChanges()

        ‘End If

 

 

 

        ” // *********************************************//

        ” // ALTERNATİF                                   //

        ” // *********************************************//

 

        ” Item Primary key kolonu değerine göre elde edilir.

       

        ‘Using entity As New MyEntity.Entities

 

        ‘    ‘ Aranan item özelliklerinin belirtildiği nesne..

        ‘    Dim obj As New MyEntity.Location

        ‘    obj.LocationID = id

 

        ‘    ” Entity içinde nesneye erişmek için key oluşturulur.

        ‘    Dim key As EntityKey = entity.CreateEntityKey(obj.GetType().Name, obj)

 

        ‘    ” Item entity içinde eşleşirse..

        ‘    If (entity.TryGetObjectByKey(key, obj)) Then

 

        ‘        ” Sistemden silinir.

        ‘        entity.DeleteObject(obj)

        ‘        entity.SaveChanges()

 

        ‘    End If

 

        ‘End Using

 

 

        ” // *********************************************//

        ” // ALTERNATİF                                   //

        ” // *********************************************//

 

        ” Silinecek nesne elde edilir.

        Dim deleteObj As MyEntity.Location = Me.Entity.Location.Where( _

            Function(loc) _

                loc.LocationID = id).FirstOrDefault()

 

        If (deleteObj IsNot Nothing) Then

 

            ” Kullanıcıdan silme onayı alınır..

            Dim diaResult As DialogResult = _

                MessageBox.Show(“Kayıt silinsin mi?”, “Silme İşlemi”, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)

 

            If (diaResult = Windows.Forms.DialogResult.Yes) Then

 

                ” Nesne silinir..

                Me.Entity.DeleteObject(deleteObj)

                Me.Entity.SaveChanges()

 

            End If

 

        End If

 

 

    End Sub

 

    Private Sub UpdateLocation(ByVal id As Integer)

 

        ” // *********************************************//

        ” // ALTERNATİF                                   //

        ” // *********************************************//

 

        ‘    Dim entity As MyEntity.Entities = Me.GetEntityInstance()

 

        ‘    ” Güncellenecek nesne elde edilir.

        ‘    Dim updObj As MyEntity.Location = entity.Location.Where _

        ‘            (Function(obj) obj.LocationID = id).FirstOrDefault()

 

        ‘    ” Özelliklerine yeni değerler set edilir.

        ‘    With updObj

 

        ‘        .Name = “Türkiye” & id.ToString

 

        ‘    End With

 

        ‘    entity.SaveChanges()

 

 

 

        ” // *********************************************//

        ” // ALTERNATİF                                   //

        ” // *********************************************//

 

        Using entity As New MyEntity.Entities

 

            ” Güncellenecek nesne elde edilir.

            Dim updObj As MyEntity.Location = entity.Location.Where _

                    (Function(obj) obj.LocationID = id).FirstOrDefault()

 

            ” Özelliklerine yeni değerler set edilir.

            With updObj

 

                .Name = “Türkiye” & id.ToString

 

            End With

 

            entity.SaveChanges()

 

        End Using

 

 

    End Sub

 

 

 

 

    Private Sub btnSelect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelect.Click

        Me.GetList(“F”)

    End Sub

 

    Private Sub btnSelectAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelectAll.Click

        Me.GetList()

    End Sub

 

    Private Sub btnInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsert.Click

        Me.InsertLocation()

        Me.GetList()

    End Sub

 

    Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click

 

        ” Seçili satır ID ‘leri silme işlemi için ilgili fonksiyona gönderilir.

        For Each row As DataGridViewRow In Me.DataGridView1.SelectedRows

 

            Dim locID As Integer = row.Cells(“LocationID”).Value

            Me.DeleteLocation(locID)

 

        Next

 

        ” Opsiyonel..

        ”Me.GetList()

 

    End Sub

 

    Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click

 

 

        ” Seçili satır ID ‘leri silme işlemi için ilgili fonksiyona gönderilir.

        For Each row As DataGridViewRow In Me.DataGridView1.SelectedRows

 

            Dim locID As Integer = row.Cells(“LocationID”).Value

            Me.UpdateLocation(locID)

 

        Next

 

        Me.GetList()

 

    End Sub

 

End Class