- GenericWcfWithPocos.zip
- GenericWcfWithPocos
- CodeGeneration
- EdmxLibrary
- Templates
- GenericWcfWithPocos.sln
- GenericWcfWithPocos.suo
- GenericWcfWithPocos.vsmdi
- Library
- AutoMapper.dll
- Local.testsettings
- Source Code
- Common
- AdventureWorks.Interface
- AdventureWorksModel
- SearchHelpers
- Server
- AdventureWorksEntityModel
- AdventureWorksService
- ServerRepository
- Tests
- EntityServiceTests
- TraceAndTestImpact.testsettings
|
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 Product : PocoBase, IExtensibleDataObject
{
// Class Name
public const string PRODUCT = "Product";
// Property Names
public const string PRODUCT_ID = "ProductID";
public const string CLASS = "Class";
public const string COLOR = "Color";
public const string DAYS_TO_MANUFACTURE = "DaysToManufacture";
public const string DISCONTINUED_DATE = "DiscontinuedDate";
public const string FINISHED_GOODS_FLAG = "FinishedGoodsFlag";
public const string LIST_PRICE = "ListPrice";
public const string MAKE_FLAG = "MakeFlag";
public const string MODIFIED_DATE = "ModifiedDate";
public const string NAME = "Name";
public const string PRODUCT_LINE = "ProductLine";
public const string PRODUCT_NUMBER = "ProductNumber";
public const string REORDER_POINT = "ReorderPoint";
public const string ROWGUID = "rowguid";
public const string SAFETY_STOCK_LEVEL = "SafetyStockLevel";
public const string SELL_END_DATE = "SellEndDate";
public const string SELL_START_DATE = "SellStartDate";
public const string SIZE = "Size";
public const string SIZE_UNIT_MEASURE_CODE = "SizeUnitMeasureCode";
public const string STANDARD_COST = "StandardCost";
public const string STYLE = "Style";
public const string WEIGHT = "Weight";
public const string WEIGHT_UNIT_MEASURE_CODE = "WeightUnitMeasureCode";
// Data Members - Keys
[DataMember(EmitDefaultValue = false)] public Int32 ProductID { get; private set; }
// Data Members
[DataMember(EmitDefaultValue = false)] public String Class { get; set; }
[DataMember(EmitDefaultValue = false)] public String Color { get; set; }
[DataMember(EmitDefaultValue = false)] public Int32 DaysToManufacture { get; set; }
[DataMember(EmitDefaultValue = false)] public DateTime? DiscontinuedDate { get; set; }
[DataMember(EmitDefaultValue = false)] public Boolean FinishedGoodsFlag { get; set; }
[DataMember(EmitDefaultValue = false)] public Decimal ListPrice { get; set; }
[DataMember(EmitDefaultValue = false)] public Boolean MakeFlag { get; set; }
[DataMember(EmitDefaultValue = false)] public DateTime ModifiedDate { get; set; }
[DataMember(EmitDefaultValue = false)] public String Name { get; set; }
[DataMember(EmitDefaultValue = false)] public String ProductLine { get; set; }
[DataMember(EmitDefaultValue = false)] public String ProductNumber { get; set; }
[DataMember(EmitDefaultValue = false)] public Int16 ReorderPoint { get; set; }
[DataMember(EmitDefaultValue = false)] public Guid rowguid { get; set; }
[DataMember(EmitDefaultValue = false)] public Int16 SafetyStockLevel { get; set; }
[DataMember(EmitDefaultValue = false)] public DateTime? SellEndDate { get; set; }
[DataMember(EmitDefaultValue = false)] public DateTime SellStartDate { get; set; }
[DataMember(EmitDefaultValue = false)] public String Size { get; set; }
[DataMember(EmitDefaultValue = false)] public String SizeUnitMeasureCode { get; set; }
[DataMember(EmitDefaultValue = false)] public Decimal StandardCost { get; set; }
[DataMember(EmitDefaultValue = false)] public String Style { get; set; }
[DataMember(EmitDefaultValue = false)] public Decimal? Weight { get; set; }
[DataMember(EmitDefaultValue = false)] public String WeightUnitMeasureCode { get; set; }
// Reference (FK) to other Table (PK)
[DataMember(EmitDefaultValue = false)] public ProductModel ProductModel { get; set; }
[DataMember(EmitDefaultValue = false)] public PocoReference<ProductModel> ProductModelReference { get; set; }
[DataMember(EmitDefaultValue = false)] public ProductSubcategory ProductSubcategory { get; set; }
[DataMember(EmitDefaultValue = false)] public PocoReference<ProductSubcategory> ProductSubcategoryReference { get; set; }
// References back to Product
[DataMember(EmitDefaultValue = false)] public IList<ProductDocument> ProductDocument { get; set; }
[DataMember(EmitDefaultValue = false)] public IList<ProductProductPhoto> ProductProductPhoto { get; set; }
[DataMember(EmitDefaultValue = false)] public IList<PurchaseOrderDetail> PurchaseOrderDetail { get; set; }
[DataMember(EmitDefaultValue = false)] public IList<WorkOrder> WorkOrder { 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>(PRODUCT_ID, ProductID)
};
}
public PocoReference<Product> GetReference()
{
PocoReference<Product> reference = GetReference(ProductID);
reference.PocoKey.ID = ObjectID;
return reference;
}
public static PocoReference<Product> GetReference(Int32 productID)
{
List<KeyValuePair<string, object>> pairs = new List<KeyValuePair<string, object>>
{
new KeyValuePair<string, object>(PRODUCT_ID, productID)
};
return GetReference(new PocoKey { Name = PRODUCT, KeyValues = pairs });
}
private static PocoReference<Product> GetReference(PocoKey pocoKey)
{
return new PocoReference<Product>
{
PocoKey = pocoKey
};
}
//
// Repository Calls
//
public override string EntitySetName()
{
return Repository.EntitySetName<Product, EntityModel.Product>(false);
}
public override IQueryable<PocoBase> Find()
{
return Repository.Find<Product, EntityModel.Product>(SearchOptions, MergeOption.NoTracking).Cast<PocoBase>();
}
public override PocoKey Add()
{
PocoKey key = Repository.Add<Product, EntityModel.Product>(this);
PocoReference<Product> reference = GetReference(key);
ProductID = (Int32)key.KeyValues.FirstOrDefault(k=> k.Key.Equals(PRODUCT_ID)).Value;
if (ProductDocument != null)
{
foreach (ProductDocument productDocument in ProductDocument)
{
if (productDocument.Product != null && productDocument.Product.ObjectID == ObjectID)
productDocument.ProductReference = reference;
}
}
if (ProductProductPhoto != null)
{
foreach (ProductProductPhoto productProductPhoto in ProductProductPhoto)
{
if (productProductPhoto.Product != null && productProductPhoto.Product.ObjectID == ObjectID)
productProductPhoto.ProductReference = reference;
}
}
if (PurchaseOrderDetail != null)
{
foreach (PurchaseOrderDetail purchaseOrderDetail in PurchaseOrderDetail)
{
if (purchaseOrderDetail.Product != null && purchaseOrderDetail.Product.ObjectID == ObjectID)
purchaseOrderDetail.ProductReference = reference;
}
}
if (WorkOrder != null)
{
foreach (WorkOrder workOrder in WorkOrder)
{
if (workOrder.Product != null && workOrder.Product.ObjectID == ObjectID)
workOrder.ProductReference = reference;
}
}
return key;
}
public override void Update()
{
Repository.Update<Product, EntityModel.Product>(this);
}
public override void Delete()
{
Repository.Delete<Product, EntityModel.Product>(this);
if (ProductDocument != null)
{
foreach (ProductDocument productDocument in ProductDocument)
{
if (productDocument.Product == this)
{
productDocument.Product = null;
productDocument.ProductReference = null;
}
}
}
if (ProductProductPhoto != null)
{
foreach (ProductProductPhoto productProductPhoto in ProductProductPhoto)
{
if (productProductPhoto.Product == this)
{
productProductPhoto.Product = null;
productProductPhoto.ProductReference = null;
}
}
}
if (PurchaseOrderDetail != null)
{
foreach (PurchaseOrderDetail purchaseOrderDetail in PurchaseOrderDetail)
{
if (purchaseOrderDetail.Product == this)
{
purchaseOrderDetail.Product = null;
purchaseOrderDetail.ProductReference = null;
}
}
}
if (WorkOrder != null)
{
foreach (WorkOrder workOrder in WorkOrder)
{
if (workOrder.Product == this)
{
workOrder.Product = null;
workOrder.ProductReference = null;
}
}
}
}
}
}
|
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.
Dave is an independent consultant working in a variety of industries utilizing Microsoft .NET technologies.