1.) Spatial type bulunan bir database oluştur.
a. Mytrack ile alınan verilerin gösterilmesi
(manuel el ile database e yazıp uygulamadan okutuyoruz.)
2.) Buna bir EF model oluştur.
3.) Bir kontroller oluştur.
a. Belirlenen
tekneye ve o tekneye belirlenen uzaklıktaki tekneler nedir? (Gerekli sql
sorgusu yazılacak)
b. Search edilen tekne ismini alıp bunu map te gösterme. (Gerekli sql
sorgusu yazılacak)
4.) Bu controller ait view i düzenle (
Markerlara tooltip ekleme, ajax, jquery kullanma)
A.1. Spatial Type Bulunan Bir Database Oluştur
1.) Ödevin
yapımında Microsoft Sql Server Management Studio kullanacağız.
2.) İlk olarak
MARİNE_TAKİP adında bir database olusturalım:
CREATE
DATABASE MARİNE_TAKİP
USE
MARİNE_TAKİP
3.)
Olusturduğumuz bu database' e " tekne " adında bir table olusturalım:
CREATE
TABLE tekne (id int primarykey, tekne_ad nvarchar(20), marine nvarchar(20), konum geography)
4.)
Olusturduğumuz bu tablonun Column Name leri sırasıyla id, tekne_ad, marine,
konum olarak belirleyelim.Data Type' larını sırasıyla int, nchar, nchar ve söz
konusu ödevimizin yapılış amacı olan Spatial Type olan geography.Her column Not
Allow nulls yapılarak değer girilmesini zorunlu hale getirelim.
1.)
Bu yeni tablomuza değerler girelim.Bunu için
şu iki komutu kullanalım:
INSERT INTO tekne(id, tekne_ad, marine, konum) VALUES(1,
'topcu', 'bandırma',geography::STGeomFromText(‘POINT (40.364002 27.969935)', 4326);
INSERT INTO tekne(id, tekne_ad, marine, konum) VALUES(2,
'tansever', 'gokceada',geography::STGeomFromText(‘POINT (40.164898 25.834468)',
4326);
INSERT INTO tekne(id, tekne_ad, marine, konum) VALUES(3,
'cobanogulları', 'bozcaada',geography::STGeomFromText(‘POINT (39.845114
26.052821)', 4326);
INSERT INTO tekne(id, tekne_ad, marine, konum) VALUES(4,
'seabird', 'antalya',geography::STGeomFromText(‘POINT (36.880226 30.699222)',
4326);
INSERT INTO tekne(id, tekne_ad, marine, konum) VALUES(5,
'martı', 'trabzon',geography::STGeomFromText(‘POINT (41.010664 39.729426)',
4326);
INSERT INTO tekne(id, tekne_ad, marine, konum) VALUES(6,
'yakamoz', 'izmir',geography::STGeomFromText(‘POINT (38.440569 27.114534)',
4326);
A.2. Bir EF Model Oluştur
1 - Visual Studio 2013 üzerinde yeni
bir WepApplication projesi oluşturalım.
2 - Projemize sağ tıklayıp New Item'a
tıklayalım. Ardından sol taraftan Data sekmesine gelelim ve karşımıza çıkan
ADO.NET Entity Data Model seçeneğini seçelim. Name kısmına da MARİNE_TAKİPModel
yazalım.
3 - Modelimizi ekledikten sonra bize
aşağıdaki gibi bir pencere açılacaktır. Burada bize 4 adet seçenek sunulmakta.
Entity Framework ile çalışmak için birden fazla yaklaşım söz konusudur. Şu anda
bize 3 adet farklı yaklaşım ile kullanım imkanı sunulmakta. Bunları kısaca
anlatmak gerekirse; EF Designer from database seçeneği önce database yaklaşımı
sunar, Emtpy EF Designer model seçeneği önce model yaklaşımı sunar, Emtpy Code
First model ve Code First from Database seçenekleri ise önce kod yaklaşımını
sunar. Bizim seçeneğimiz basit anlamda giriş projesi oluşturduğumuz için ve
fazla karışıklığa mahal vermemek adına ilk seçenek yani EF Designer from
database seçeneği olacaktır. Bu seçeneği seçip Next diyelim.
4 - Gelen pencerede var olan bir
bağlantıyı seçebilir yada New Connection diyerek yeni bir bağlantı
oluşturabiliriz. Bağlantımızı oluşturduktan sonra Save Connection settings in
App.Config as seçeneğini işaretleyelim. Bu seçeneği işaretlemezsek bağlantı
bilgilerimiz direkt kod içinde belirtilecektir. Biz daha sonra da değişiklik
yapılabileceğini düşündüğümüz için App.Config dosyasına eklenmesini istiyoruz.
Bu seçenek işaretlendiğinde bir Name alanı gelmekte. Buraya girdiğimiz değere
göre App.Config içerisine bir ConnectionString tanımlanacak ve yine bu isme
göre Context sınıfımız oluşturulacak. O yüzden bu ismi kendinize göre
düzenleyebilirsiniz.
5- Bir sonraki adımda veritabanı
objelerimiz (table, views, stored procedure, functions) ekranda
listelenecektir. Burada istediklerimizi işaretleyelim.
6- Son olarak Finish butonuna tıklayarak modelimizi
oluşturabiliriz.
A-3- Bir Controller Oluştur
1- Solution Explorer -> Controller -> Add
-> Controller
1- Bu aşamada Scaffold yapısı bize bir çok seçenek
sunmakta, biz burdan Entity Framework Data Modelini kullanarak View’lerimizi de
oluşturan Controller’ı seçiyoruz.
A-3-a- Belirlenen tekneye ve o tekneye
belirlenen uzaklıktaki tekneler nedir? (Gerekli sql sorgusu yazılacak)
-
teknesController
classı içindeki Search2 metodu
-
Bu kod kısmında;
sql sorgusunu result değişkenine atıyor. Daha sonra lm adında mekan türünde
yeni bir list oluşturuyor. Foreach döngüsü ile tekne içindeki sql sorgularını
tek tek uygulayıp sonuçları myL ye alıyor. Bunları mekan türünde yeni bir nM
nesnesi oluşturarak gerekli değişkenlere atama işlemi yapıyor. Sonra bunları lm
listesine ekliyor. Ve son olarak ta json metodunu çalıştırıp geri döndürüyor.
A-3-b- a. Search edilen tekne ismini
alıp bunu map te gösterme. (Gerekli sql sorgusu yazılacak)
-
Search metodu ve
devamındaki json metodu. Temel mantık yine aynı fakat burada ki search metodu
girlen tekne_ad a göre database ten map te gösterebileceği gerekli olan
değerleri çekiyor.
1-
Bu controller ait view i düzenle ( Markerlara
tooltip ekleme, ajax, jquery kullanma)
-
Bu kısım da
controller da oluşturduğumuz search2 metodu çağrılarak sql sorgusunda geri
dönen değerler script yardımıyla Google map te görsel veri haline gelmiştir.
-
Aynı zamanda
ajax kullanılarak dinamik bir sayfa elde edilmiş sayfa yenilenmeden yapılan
değiklikler görüntülenmiştir.
-
Aynı script
kodları projemde search ve search4 metodları içinde kullanılmıştır.
ÇALIŞAN EKRAN GÖRÜNTÜSÜ
GİTHUP LİNK
https://github.com/Huseyincobanoglu/ileri-veritabani