DataPortal_Fetch() for silverlight

DataPortal_Fetch() for silverlight

Old forum URL: forums.lhotka.net/forums/t/11870.aspx


mayurimalgave posted on Wednesday, March 06, 2013

I have created a simple silverlight using CSLA.I have created only one BusinessBase class. The code of the BusinessBase class is as follows:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

public class DesignationEdit : BusinessBase<DesignationEdit>

{

 

 

 

public static readonly PropertyInfo<int> IdProperty = RegisterProperty<int>(c => c.Id);

 

 

 

public int Id

{

 

 

 

get { return GetProperty(IdProperty); }

 

 

 

set { SetProperty(IdProperty, value); }

}

 

 

 

public static readonly PropertyInfo<string> DescriptionProperty = RegisterProperty<string>(c => c.Description);

 

 

 

public string Description

{

 

 

 

get { return GetProperty(DescriptionProperty); }

 

 

 

set { SetProperty(DescriptionProperty, value); }

}

 

 

 

public static readonly PropertyInfo<byte[]> TimeStampProperty = RegisterProperty<byte[]>(c => c.TimeStamp);

 

 

 

public byte[] TimeStamp

{

 

 

 

get { return GetProperty(TimeStampProperty); }

 

 

 

set { SetProperty(TimeStampProperty, value); }

}

 

 

 

public static void NewDesignationEdit(EventHandler<DataPortalResult<DesignationEdit

>> callback)

{

 

DataPortal.BeginCreate<DesignationEdit>(callback);}

 

 

 

public static void GetDesignationEdit(int id, EventHandler<DataPortalResult<DesignationEdit>> callback)

{

 

 

DataPortal.BeginFetch<DesignationEdit>(id, callback);

}

 

#if

 

 

 

 

 

!WINDOWS_PHONE

 

 

 

public static async Task<DesignationEdit> NewDesignationEditAsync()

{

 

 

return await DataPortal.CreateAsync<DesignationEdit>();

}

 

 

 

public static async Task<DesignationEdit> GetDesignationEditAsync(int id)

{

 

 

return await DataPortal.FetchAsync<DesignationEdit>(id);

}

 

 

 

public void DataPortal_Fetch(int id)

{

 

 

 

var result = DataPortal.Fetch<DesignationEdit>(id);

 

 

 

using(result.BypassPropertyChecks)

{

Id = result.Id;

Description = result.Description;

TimeStamp = result.TimeStamp;

}}

 

 

 

 

 

 

 

 

 

 

#endif

#if

 

 

 

 

 

!SILVERLIGHT

 

 

 

public static DesignationEdit NewDesignationEdit()

{

 

 

return DataPortal.Create<DesignationEdit>();

}

 

 

 

public static DesignationEdit GetDesignationEdit(int id)

{

 

 

return DataPortal.Fetch<DesignationEdit>(id);

}

 

 

 

public static void DeleteDesignationEdit(int id)

 

 

{

DataPortal.Delete<DesignationEdit>(id);

}

 

 

 

#endif

}

 

 The code of MainPage.xaml.cs is as follows:

 

 

 

public

 

 

partial class MainPage : UserControl

{

 

 

 

 

public MainPage()

{

InitializeComponent();

}

 

 

 

private async void UserControl_Loaded(object sender, RoutedEventArgs e)

{

 

 

 

this.DataContext = await DesignationEdit.GetDesignationEditAsync(1);

}

}

I have created Library,Dal,DalEf,WcfAppServer projects.Application builds successfully.But when i run the application,it gives the error at DataPortal_Fetch() as:

An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll

I want to write DataPortal_Fetch() as follows in !WindowsPhone region:

 

 

 

 

 

private

 

 

void DataPortal_Fetch(int id)

{

 

 

 

using (var ctx = SimpleNTier.Dal.DalFactory.GetManager())

{

 

 

 

var dal = ctx.GetProvider<SimpleNTier.Dal.IDesignationDal>();

 

 

 

var data = dal.Fetch(id);

 

 

 

using(BypassPropertyChecks)

 

{

Id = data.Id;

Description = data.Description;

TimeStamp = data.LastChanged;

}

}

}

But it gives an error as Dal doesnt exists in this context. Then how should i write DataPortal_Fetch() for silverlight in the business base class itself?

 

 

 

Copyright (c) Marimer LLC