13 Aralık 2015 Pazar

DB’deki tüm tablolardaki kayıt sayısı ve index boyutunu hesaplamak

Database deki tüm kayıtları tablo bazında ve diskte ne kadar yer kapladığınız sorgulamak için kullanılacak bir script.

SET nocount ON
CREATE TABLE #spaceused
 (name NVARCHAR(120) ,
 rows CHAR(11) ,
 reserved VARCHAR(18) ,
 data VARCHAR(18) ,
 index_size VARCHAR(18) ,
 unused VARCHAR(18))
DECLARE Tables CURSOR
FOR
SELECT sys.schemas.name + '.' + sys.objects.name
      FROM sys.objects
      INNER JOIN sys.schemas ON sys.objects.schema_id = sys.schemas.schema_id
      WHERE sys.objects.type = 'U'
OPEN Tables
DECLARE @table VARCHAR(128)
FETCH NEXT FROM Tables INTO @table
WHILE @@FETCH_STATUS = 0
      BEGIN
           INSERT INTO #spaceused
           EXEC sp_spaceused @table
           FETCH NEXT FROM Tables INTO @table
      END
CLOSE Tables
DEALLOCATE Tables
SELECT *
FROM #spaceused
ORDER BY CAST([rows] AS BIGINT) DESC
DROP TABLE #spaceused
EXEC sp_spaceused
Script çalıştırıldığında aşağıda görüldüğü üzere tablo bazında satır sayısı ve diskte ne kadar yer kapladığı görüntülenebilmektedir.

4 Aralık 2015 Cuma

EntityFramework savechanges olmadan önce bir önceki değeri alma

db.Users.Attach(user);
var current = db.Entry(user).CurrentValues.Clone();
db.Entry(user).Reload();
//Do you user(from db) stuff
db.Entry(user).CurrentValues.SetValues(current);
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();

26 Kasım 2015 Perşembe

SQL Server üzerinde Stored Procedure Kullanimi

Merhaba Arkadaslar,

Bu makalemizde SQL Server üzerinde Stored Procedure yazimini inceleyecegiz.

Stored Procedure’ler database server üzerinde saklanan SQL cümlecikleridir. Parametreler alabilirler ve size sonuçlar döndürebilirler. Avantajlari arasinda DB server üzerinde olmasindan dolayi daha hizli çalismalari, sadece ilk çalismalarinda derlenmeleri sonraki çalismalarda derlenmemeleri (bu da neden hizli oldugunu açikliyor) SQL cümlecikleri ve programlama dilleri ile yazdigimiz kodlari birbirinden ayristirmamizi saglamasi sayilabilir.



Mesela MUSTERI tablosundaki tüm kayitlari getiren sadece ID degeri verilen MUSTERI kaydini getiren ve istenilen müsteri kaydinin silinmesini saglayan Stored Procedure leri sirayla yazalim.

    1-Tüm müsteri kayitlarini döndüren Stored Procedure










CREATE PROCEDURE Musteri_ReadAll
AS
BEGIN
      SET NOCOUNT ON;
      SELECT * from MUSTERI
 
END
GO
Peki bu Stored Procedure nasil çalistiracagiz. Bunu da EXEC komutu ile yapariz


EXEC dbo.Musteri_ReadAll
komutunun sonuç kümesi asagidaki gibidir

2-Sadece ID si verilen bir müsteri kaydini getiren Stored Procedure











CREATE PROCEDURE Musteri_ReadById
@Id int  --parametre
AS
 
BEGIN
      SET NOCOUNT ON;
      SELECT * from MUSTERI
      WHERE Id = @Id
END
Kullanimi asagidaki gibidir.
?



   DECLARE @Id int
SET @Id = 2
EXEC dbo.Musteri_ReadById @Id


3-  Istenilen bir müsteri kaydini silen Stored Procedure









CREATE PROCEDURE Musteri_DeleteById
@Id int  --parametre
AS
BEGIN
 
SET NOCOUNT ON;
      DELETE from MUSTERI
Kullanimi asagidaki gibidir.




  DECLARE @Id int
SET @Id = 2
EXEC dbo.Musteri_DeleteById @ID
Baska bir makalede görüsmek üzere….

http://www.yazilimmutfagi.com/10257/veritabani/sql-server/sql-server-uzerinde-stored-procedure-kullanimi.aspx

16 Ekim 2015 Cuma

Asp.net MVC yapılmaması gerekenler

Yapmamız gerekenler
Controller -> Action içinde tek servisten verileri getirmeliyiz
İsimlendirme notasyonlarını düzgün yapmak gerekiyor. Daha sonra anlayabilmemiz için
Farklı katmanlar olması en azından c# için dll dosyalarını parçalamamızı sağlıyor. Ayrı ayrı build hata var mı diye kontrol edebiliriz.
Servis metotlarında ekleme işlemi, silme (bool), güncelleme işlemlerinde geriye nesnenin "id" değeri dönmesi gerekir.
Servis metotlarında kökten silme işlemlerinde geriye bool "true" veya "false" değerleri içeren bir nesne dönmesi lazım.
İç içe bağlılık gereken partiallar çağırılıyorsa bunlar Html.Action kullanmamız daha iyi olur çünkü partiallar arasında bağımlılığı azaltır. Sadece id'değeri yeter
PartialView'ler belli html etiketleri döndürüyorsa isimlendirmeyi ve dosyalamayı ona göre yapmalısın örneğin Views/Shared/FormElements/_Select.cshtml  içine model olarak Model katmanından bir model eklemeliyiz.
Html.Partial'a içine model gitmeyen şeyler için yapılmalı


Yapmamamız gerekenler
Partial içinde partial çağırırken derinlik 1'i geçmemeli.
Class modellerinde iç içe gereklilik gerektiren başka classların kullanılmamalı.
Modellerde ortak tablo kullanma çabasına girmeye gerek yok. Her alanın tablosu ayrı olması hem okunabilirliği artıyor hem kod yazarken karmaşayı azaltıyor.
EF'de 1 veri gereken yerde [model].FirstOrDefault()  yazıyorsak bir sıkıntı vardır, tablo ilişkisi çoktan çoka (many-to-many) değil, birden çoka(one-to-many) olması gerekiyor.

14 Ekim 2015 Çarşamba

Json nesne döndürme

return Json(JsonConvert.SerializeObject(result), JsonRequestBehavior.AllowGet);

.net 6 mapget kullanımı

 app.UseEndpoints(endpoints => {     endpoints.MapGet("/", async context =>     {         var response = JsonConvert.Seriali...