?? C#

bu nedir şimdi diyorum kodu okurken aynen şöyle bir satır.

return ViewState[“SortExpression”] as string ?? string.Empty;

bi an durakladım bu neki şimdi 3 senedir C# yazarım bu ne lan 😀 meğersem gayet güzel bir operatörmüş ()?: bu yapıyı andırıo ama bunda(??) koşul null olması.

şöyleki ?? işaretinin solundaki return ediliyor eğer null değilse. eğer işaretin solundaki null ise sağdaki return ediliyor nerde çağırıldıysa.

hazır başlamışken ()?: bunuda anlatim. bu çok eski bir yapıdır taa C de vardı 🙂 ondan sonra hangi dil çıktıysa taşıdı desem yeridir. böle azcık satırlarımız olsun istediğimizde kullanırız parantezin içinedeki koşul true ise soru işaretinin sağındaki değilse iki nokta üst üstenin sağındaki return edilir. örnek:

string samsalak=”1″;
string dumbelek=(samsalak==”1″)?”dertsiz”:”tasasız”;

bu durumda dumbelek dertsiz olacaktır ama samsalak =”1″ demeseydik tasasız olcaktı 🙂 demekki samsalaklar ne olursa olsun dumbelekler hep mutlu 😀

Session state in sql de tutulması (ASPState)

bu durum sessionun uzun ömürlü olmasını istediğinizde yapacağınız bişeydir ki
Session[“eblek”]=”gobalak”;
dediğimizde veriler sql de tutulur ve timeout süresince orda kalırlar.

bunu kurmakda ayrı konudur hemen web.config den ayarlayınca olmazlar

C:WINDOWSMicrosoft.NETFrameworkv2.0.50727>aspnet_regsql.exe -ssadd -C “Data
Source=localhost;User ID=***;Password=***”

şeklinde ayarlanırlar.
web.config dede yapılması gerekenler
<sessionState
mode="SQLServer"
sqlConnectionString="Data Source=localhost;User ID=***;Password=***"
cookieless="false"
timeout="1000" />

aha şimdi 1000 dakikalık sessionumuz ilen dakılabilirsiniz 🙂

sqldatasource kullanmak ve faydaları

öncelikle server browserdan sürükler bırakırsın çat diye oluşur insert ve inserted eventlerini yakalarsan mssql de son insert ettiğin id yi ala bilirsin .

protected void SqlDataSource1_Inserted(object sender, SqlDataSourceStatusEventArgs e)
{
int _inserted_maintemplate_id = Convert.ToInt32(((IDbDataParameter)e.Command.Parameters[“@NewID”]).Value);

}
protected void SqlDataSource1_Inserting(object sender, SqlDataSourceCommandEventArgs e)
{
((IDbDataParameter)e.Command.Parameters[“@NewID”]).Size = 4;
}

asp:parameter type=”String” name=”NewID” direction=”Output”

bu son parametreyide eklemeyi unutma ama table da değişiklik yapıp insert dersen ve sql i değiştirmediysen anlamsız exception veriyor. table değişirse sqlini değiştirmeyi unuma.