BeyazNet

Türkiye Beyazay Derneği’nin dernek çalışmalarını yönetebileceği web tabanlı bir yazılım geliştirdik. 32 modülden oluşan bu kapsamlı yazılım 3 aylık bir üretim süresinde genel olarak tamamlandı. Yazılımı ASP.NET ve SQL Server kullanarak hazırladık. Test ve bug düzeltme aşamasında olan bu yazılım için bir arayüz tasarımı hazırlamamız gerekiyor. BeyazNet’de dijital imza entegrasyonu, toplu eposta ve SMS gönderme gibi özellikler de olacak.

Reklamlar

ASP.NET Profile Üzerinde Arama

Bu yazımda ASP.NET’le birlikte gelen Profile sistemini kullanmaktan çekinenlere cesaret verecek bir yöntemden bahsedeceğiz. ASP.NET Profile class’ını inceleyenlerin ilk dikkatini çeken şey kullanım kolaylığıdır. Bu sistem sayesinde veritabanı ve karmaşık kodlarla uğraşmadan kolaylıkla Üyelik ve Profil sistemi oluşturabiliyoruz. Oldukça da sağlıklı çalışıyor. Fakat ilk dikkat çeken şeylerden biri de Profile classında profil özelliklerine göre arama bulunmaması. Bu nedenle bir çok kişi her bir profil özelliğini ayrı tablo sütunu olarak kaydeden Profil Sağlayıcı geliştirmekle uğraşıyor. Halbuki ASP.NET Profile sistemi sonuçta verileri kendine özel bir mantıkla yine veritabanı tablosuna kaydediyor. Bu tablo üzerinde biraz uğraşarak SQL yardımıyla arama yapabiliriz. Sizlere bunun nasıl yapıldığını derinlemesine anlatmayacağım, onun yerine direkt profil tablosundaki belirli bir özelliğin değerini getirebilen bir SQL fonksiyonu paylaşıyorum:

-- =============================================
-- Create date: 09/01/2006
-- Description: Gets the property value from
-- the Asp.Net profile.
-- @PropertyName – The property to
-- be found.
-- @PropertyNamesString – The
-- property names information.
-- @PropertyValuesString – The
-- property values information
-- =============================================
CREATE FUNCTION [dbo].[GetProfilePropertyValue] (
@PropertyName as varchar(max)
, @PropertyNamesString as varchar(max)
, @PropertyValuesString as varchar(max))
RETURNS varchar(max)
AS
BEGIN
DECLARE @StartIndex int
DECLARE @EndIndex int
DECLARE @StartPos int
DECLARE @Length int

-- First we find the starting position
Set @StartIndex = PatIndex('%' + @PropertyName + ':%', @PropertyNamesString) + LEN(RTRIM(@PropertyName)) + 3
Set @EndIndex = PatIndex('%:%', Right(@PropertyNamesString, LEN(@PropertyNamesString) - @StartIndex))
Set @StartPos = Cast(Substring(@PropertyNamesString, @StartIndex, @EndIndex) As Int)

-- Now we need to know how long it is
Set @StartIndex = @StartIndex + @EndIndex + 1
Set @EndIndex = PatIndex('%:%', Right(@PropertyNamesString, LEN(@PropertyNamesString) - @StartIndex))
Set @Length = Cast(Substring(@PropertyNamesString, @StartIndex, @EndIndex) As int)

-- Now we get the value we want
RETURN SUBSTRING(@PropertyValuesString, @StartPos + 1, @Length)
END

Bu fonksiyonu SQL Server veritabanınıza kaydedin, ve sonra tek yapmanız gereken bu oluşturduğumuz fonksiyonu SQL select cümlesinde kullanmak.

SELECT
dbo.GetProfilePropertyValue('LastName', PropertyNames, PropertyValuesString)
, dbo.GetProfilePropertyValue('FirstName', PropertyNames, PropertyValuesString)
, dbo.GetProfilePropertyValue('Phone', PropertyNames, PropertyValuesString)
FROM aspnet_Profile

Evet bu kadar basit. Şimdi arama nasıl yapabiliriz? Bu SQL cümleciğini kullanarak (tabi kendi profil özelliklerinizi yazmalısınız) bir View oluşturun. Böylece bu oluşturduğunu View’u kullanarak Profil özellikleri (sütunlar) ve değerleri üzerinde aramalar yapabilirsiniz. Hem daha yüksek performans elde edersiniz, hem de arama işlemi muazzam derece kolaylaşır…