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