Click here to Skip to main content
15,896,063 members
Articles / Programming Languages / C#

The Power of a POC

Rate me:
Please Sign up or sign in to vote.
4.42/5 (6 votes)
26 Apr 2011CPOL13 min read 50K   358   19  
The importance of creating a POC as the first step to your next adventure
using System;
using System.Collections.Generic;
using System.Data.Objects;
using System.Linq;
using System.Runtime.Serialization;

using EntityModel = AdventureWorksEntityModel;


namespace AdventureWorksModel
{
    [DataContract(IsReference = true)]
    public partial class PurchaseOrderDetail : PocoBase, IExtensibleDataObject
    {
   		// Class Name
		public const string PURCHASE_ORDER_DETAIL = "PurchaseOrderDetail";
		
		// Property Names
        public const string PURCHASE_ORDER_DETAIL_ID = "PurchaseOrderDetailID";
        public const string PURCHASE_ORDER_ID = "PurchaseOrderID";
        public const string DUE_DATE = "DueDate";
        public const string LINE_TOTAL = "LineTotal";
        public const string MODIFIED_DATE = "ModifiedDate";
        public const string ORDER_QTY = "OrderQty";
        public const string RECEIVED_QTY = "ReceivedQty";
        public const string REJECTED_QTY = "RejectedQty";
        public const string STOCKED_QTY = "StockedQty";
        public const string UNIT_PRICE = "UnitPrice";

		// Data Members - Keys
        [DataMember(EmitDefaultValue = false)] public Int32 PurchaseOrderDetailID { get; private set; }
        [DataMember(EmitDefaultValue = false)] public Int32 PurchaseOrderID { get; private set; }

		// Data Members
        [DataMember(EmitDefaultValue = false)] public DateTime DueDate { get; set; }
        [DataMember(EmitDefaultValue = false)] public Decimal LineTotal { get; set; }
        [DataMember(EmitDefaultValue = false)] public DateTime ModifiedDate { get; set; }
        [DataMember(EmitDefaultValue = false)] public Int16 OrderQty { get; set; }
        [DataMember(EmitDefaultValue = false)] public Decimal ReceivedQty { get; set; }
        [DataMember(EmitDefaultValue = false)] public Decimal RejectedQty { get; set; }
        [DataMember(EmitDefaultValue = false)] public Decimal StockedQty { get; set; }
        [DataMember(EmitDefaultValue = false)] public Decimal UnitPrice { get; set; }

		// Reference (FK) to other Table (PK)	
		[DataMember(EmitDefaultValue = false)] public Product Product { get; set; }
		[DataMember(EmitDefaultValue = false)] public PocoReference<Product> ProductReference { get; set; }
		
		[DataMember(EmitDefaultValue = false)] public PurchaseOrderHeader PurchaseOrderHeader { get; set; }
		[DataMember(EmitDefaultValue = false)] public PocoReference<PurchaseOrderHeader> PurchaseOrderHeaderReference { get; set; }
		

		public ExtensionDataObject ExtensionData { get; set; }

		//
		// Public Class Methods
		//

   		public override IList<KeyValuePair<string, object>> GetKeys()
    	{
			return new List<KeyValuePair<string, object>> 
			{ 
				new KeyValuePair<string, object>(PURCHASE_ORDER_DETAIL_ID, PurchaseOrderDetailID),
				new KeyValuePair<string, object>(PURCHASE_ORDER_ID, PurchaseOrderID)
			};
    	}

    	public PocoReference<PurchaseOrderDetail> GetReference()
		{
			PocoReference<PurchaseOrderDetail> reference = GetReference(PurchaseOrderDetailID, PurchaseOrderID);
			reference.PocoKey.ID = ObjectID;
			return reference; 
		}

		public static PocoReference<PurchaseOrderDetail> GetReference(Int32 purchaseOrderDetailID, Int32 purchaseOrderID)
		{
			List<KeyValuePair<string, object>> pairs = new List<KeyValuePair<string, object>> 
			{ 
				new KeyValuePair<string, object>(PURCHASE_ORDER_DETAIL_ID, purchaseOrderDetailID),
				new KeyValuePair<string, object>(PURCHASE_ORDER_ID, purchaseOrderID)
			};

			return GetReference(new PocoKey { Name = PURCHASE_ORDER_DETAIL, KeyValues = pairs });
		}		
    	
    	private static PocoReference<PurchaseOrderDetail> GetReference(PocoKey pocoKey)
		{
			return new PocoReference<PurchaseOrderDetail>
			{
				PocoKey = pocoKey
			};
		}

		//
		// Repository Calls
		//
		
		public override string EntitySetName()
    	{
			return Repository.EntitySetName<PurchaseOrderDetail, EntityModel.PurchaseOrderDetail>(false);
    	}

		public override IQueryable<PocoBase> Find()
    	{
			return Repository.Find<PurchaseOrderDetail, EntityModel.PurchaseOrderDetail>(SearchOptions, MergeOption.NoTracking).Cast<PocoBase>();
    	}

		public override PocoKey Add()
    	{
			PocoKey key = Repository.Add<PurchaseOrderDetail, EntityModel.PurchaseOrderDetail>(this);
			PocoReference<PurchaseOrderDetail> reference = GetReference(key);
			
			PurchaseOrderDetailID = (Int32)key.KeyValues.FirstOrDefault(k=> k.Key.Equals(PURCHASE_ORDER_DETAIL_ID)).Value;
			PurchaseOrderID = (Int32)key.KeyValues.FirstOrDefault(k=> k.Key.Equals(PURCHASE_ORDER_ID)).Value;

			return key;
    	}
    	
		public override void Update()
    	{
			Repository.Update<PurchaseOrderDetail, EntityModel.PurchaseOrderDetail>(this);
    	}
    	
		public override void Delete()
		{
			Repository.Delete<PurchaseOrderDetail, EntityModel.PurchaseOrderDetail>(this);
		}
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior) Webbert Solutions
United States United States
Dave is an independent consultant working in a variety of industries utilizing Microsoft .NET technologies.

Comments and Discussions