Sunday, May 31, 2009

Build Google IG like Ajax

public UserPageSetup NewUserVisit( )
{
        var properties = new Dictionary();
        properties.Add("UserName", this._UserName);
        var userSetup = new UserPageSetup();
        properties.Add("UserPageSetup", userSetup);

        WorkflowHelper.ExecuteWorkflow( typeof( NewUserSetupWorkflow ),
                                      properties );

        return userSetup;
}


var db = new DashboardData(ConnectionString);

var newPage = new Page();
newPage.UserId = UserId;
newPage.Title = Title;
newPage.CreatedDate = DateTime.Now;
newPage.LastUpdate = DateTime.Now;

db.Pages.Add(newPage);
db.SubmitChanges();
NewPageId = newPage.ID;

var page = db.Pages.Single( p => p.ID == PageId );
page.Title = PageName;
db.SubmitChanges();
Here only one row is selected.

You can also select a single value:

 Collapse
var UserGuid = (from u in db.AspnetUsers
where u.LoweredUserName == UserName &&
      u.ApplicationId == DatabaseHelper.ApplicationGuid
select u.UserId).Single();
And here's the Projection I was talking about:

 Collapse
var users = from u in db.AspnetUsers
select { UserId = u.UserId, UserName = u.LoweredUserName };

foreach( var user in users )
{
Debug.WriteLine( user.UserName );
}
If you want to do some paging like select 20 rows from 100th rows:

 Collapse
var users = (from u in db.AspnetUsers
select { UserId = u.UserId, UserName = u.LoweredUserName }).Skip(100).Take(20);

foreach( var user in users )
{
Debug.WriteLine( user.UserName );
}
If you are looking for transaction, see how simple it is:

 Collapse
using( TransactionScope ts = new TransactionScope() )
{
List pages = db.Pages.Where( p => p.UserId == oldGuid ).ToList();
foreach( Page page in pages )
page.UserId = newGuid;

// Change setting ownership

UserSetting setting = db.UserSettings.Single( u => u.UserId == oldGuid );
db.UserSettings.Remove(setting);

setting.UserId = newGuid;
db.UserSettings.Add(setting);
db.SubmitChanges();

ts.Complete();
}






public UserPageSetup LoadUserSetup( )
{
        var properties = new Dictionary();
        properties.Add("UserName", this._UserName);
        var userSetup = new UserPageSetup();
        properties.Add("UserPageSetup", userSetup);

        WorkflowHelper.ExecuteWorkflow( typeof( UserVisitWorkflow ),
                              properties );

        return userSetup;

}



334ec662-0e45-4f1c-bf2c-cd3a27014691 Activity: Get User Guid        0.078125
b030692b-5181-41f9-a0c3-69ce309d9806 Activity: Get User Pages       0.0625
b030692b-5181-41f9-a0c3-69ce309d9806 Activity: Get User Setting     0.046875
b030692b-5181-41f9-a0c3-69ce309d9806 Activity: Get Widgets in page: 189 0.0625
334ec662-0e45-4f1c-bf2c-cd3a27014691 Total: Existing user visit     0.265625

No comments:

Post a Comment