212 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			212 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Text;
 | 
						|
using System.Data.SqlClient;
 | 
						|
using Csla;
 | 
						|
 | 
						|
namespace Templates
 | 
						|
{
 | 
						|
  [Serializable()]
 | 
						|
  class SwitchableObject : BusinessBase<SwitchableObject>
 | 
						|
  {
 | 
						|
    #region Business Methods
 | 
						|
 | 
						|
    // TODO: add your own fields, properties and methods
 | 
						|
    private int _id;
 | 
						|
 | 
						|
    public int id
 | 
						|
    {
 | 
						|
      [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
 | 
						|
      get 
 | 
						|
      {
 | 
						|
        CanReadProperty(true);
 | 
						|
        return _id; 
 | 
						|
      }
 | 
						|
      [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
 | 
						|
      set
 | 
						|
      {
 | 
						|
        CanWriteProperty(true);
 | 
						|
        if (_id != value)
 | 
						|
        {
 | 
						|
          _id = value;
 | 
						|
          PropertyHasChanged();
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    protected override object GetIdValue()
 | 
						|
    {
 | 
						|
      return _id;
 | 
						|
    }
 | 
						|
 | 
						|
    #endregion
 | 
						|
 | 
						|
    #region Validation Rules
 | 
						|
 | 
						|
    protected override void AddBusinessRules()
 | 
						|
    {
 | 
						|
      // TODO: add validation rules
 | 
						|
      //ValidationRules.AddRule(null, "");
 | 
						|
    }
 | 
						|
 | 
						|
    #endregion
 | 
						|
 | 
						|
    #region Authorization Rules
 | 
						|
 | 
						|
    protected override void AddAuthorizationRules()
 | 
						|
    {
 | 
						|
      // TODO: add authorization rules
 | 
						|
      //AuthorizationRules.AllowWrite("", "");
 | 
						|
    }
 | 
						|
 | 
						|
    public static bool CanAddObject()
 | 
						|
    {
 | 
						|
      // TODO: customize to check user role
 | 
						|
      //return ApplicationContext.User.IsInRole("");
 | 
						|
      return true;
 | 
						|
    }
 | 
						|
 | 
						|
    public static bool CanGetObject()
 | 
						|
    {
 | 
						|
      // TODO: customize to check user role
 | 
						|
      //return ApplicationContext.User.IsInRole("");
 | 
						|
      return true;
 | 
						|
    }
 | 
						|
 | 
						|
    public static bool CanEditObject()
 | 
						|
    {
 | 
						|
      // TODO: customize to check user role
 | 
						|
      //return ApplicationContext.User.IsInRole("");
 | 
						|
      return true;
 | 
						|
    }
 | 
						|
 | 
						|
    public static bool CanDeleteObject()
 | 
						|
    {
 | 
						|
      // TODO: customize to check user role
 | 
						|
      //return ApplicationContext.User.IsInRole("");
 | 
						|
      return true;
 | 
						|
    }
 | 
						|
 | 
						|
    #endregion
 | 
						|
 | 
						|
    #region Factory Methods
 | 
						|
 | 
						|
    public static SwitchableObject NewSwitchableRoot()
 | 
						|
    {
 | 
						|
      return DataPortal.Create<SwitchableObject>(
 | 
						|
        new RootCriteria());
 | 
						|
    }
 | 
						|
 | 
						|
    internal static SwitchableObject NewSwitchableChild()
 | 
						|
    {
 | 
						|
      return DataPortal.Create<SwitchableObject>(
 | 
						|
        new ChildCriteria());
 | 
						|
    }
 | 
						|
 | 
						|
    public static SwitchableObject GetSwitchableRoot(int id)
 | 
						|
    {
 | 
						|
      return DataPortal.Fetch<SwitchableObject>(
 | 
						|
        new RootCriteria(id));
 | 
						|
    }
 | 
						|
 | 
						|
    internal static SwitchableObject GetSwitchableChild(
 | 
						|
      SqlDataReader dr)
 | 
						|
    {
 | 
						|
      return new SwitchableObject(dr);
 | 
						|
    }
 | 
						|
 | 
						|
    public static void DeleteSwitchableObject(int id)
 | 
						|
    {
 | 
						|
      DataPortal.Delete(new RootCriteria(id));
 | 
						|
    }
 | 
						|
 | 
						|
    private SwitchableObject()
 | 
						|
    { /* Require use of factory methods */ }
 | 
						|
 | 
						|
    private SwitchableObject(SqlDataReader dr)
 | 
						|
    {
 | 
						|
      Fetch(dr);
 | 
						|
    }
 | 
						|
 | 
						|
    #endregion
 | 
						|
 | 
						|
    #region Data Access
 | 
						|
 | 
						|
    [Serializable()]
 | 
						|
    private class RootCriteria
 | 
						|
    {
 | 
						|
      private int _id;
 | 
						|
      public int Id
 | 
						|
      {
 | 
						|
        get { return _id; }
 | 
						|
      }
 | 
						|
      public RootCriteria(int id)
 | 
						|
      { _id = id; }
 | 
						|
      public RootCriteria()
 | 
						|
      { }
 | 
						|
    }
 | 
						|
 | 
						|
    [Serializable()]
 | 
						|
    private class ChildCriteria
 | 
						|
    { }
 | 
						|
 | 
						|
    private void DataPortal_Create(RootCriteria criteria)
 | 
						|
    {
 | 
						|
      DoCreate();
 | 
						|
    }
 | 
						|
 | 
						|
    private void DataPortal_Create(ChildCriteria criteria)
 | 
						|
    {
 | 
						|
      MarkAsChild();
 | 
						|
      DoCreate();
 | 
						|
    }
 | 
						|
 | 
						|
    private void DoCreate()
 | 
						|
    {
 | 
						|
      // TODO: load default values
 | 
						|
    }
 | 
						|
 | 
						|
    private void DataPortal_Fetch(RootCriteria criteria)
 | 
						|
    {
 | 
						|
      // TODO: create data reader to load values
 | 
						|
      using (SqlDataReader dr = null)
 | 
						|
      {
 | 
						|
        DoFetch(dr);
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    private void Fetch(SqlDataReader dr)
 | 
						|
    {
 | 
						|
      MarkAsChild();
 | 
						|
      DoFetch(dr);
 | 
						|
    }
 | 
						|
 | 
						|
    private void DoFetch(SqlDataReader dr)
 | 
						|
    {
 | 
						|
      // TODO: load values
 | 
						|
    }
 | 
						|
 | 
						|
    protected override void DataPortal_Insert()
 | 
						|
    {
 | 
						|
      // TODO: insert values
 | 
						|
    }
 | 
						|
 | 
						|
    protected override void DataPortal_Update()
 | 
						|
    {
 | 
						|
      // TODO: update values
 | 
						|
    }
 | 
						|
 | 
						|
    protected override void DataPortal_DeleteSelf()
 | 
						|
    {
 | 
						|
      DataPortal_Delete(new RootCriteria(_id));
 | 
						|
    }
 | 
						|
 | 
						|
    private void DataPortal_Delete(RootCriteria criteria)
 | 
						|
    {
 | 
						|
      // TODO: delete values
 | 
						|
    }
 | 
						|
 | 
						|
    #endregion
 | 
						|
  }
 | 
						|
}
 |