Serializable POCO Classes Based on the AdventureWorks Model

This example contains definitions for serializable POCO entity classes and a custom object context class. The POCO entity classes are based on the AdventureWorks data model that is defined in How to: Customize Modeling and Mapping Files to Work with Custom Objects.

In the code page for your application, add the following using statements (Imports in Visual Basic):

using System.Data.Objects;
using System.Runtime.Serialization;
#region Contexts

public partial class POCOAdventureWorksEntities : ObjectContext
{
    private ObjectSet<Contact> _contacts;
    private ObjectSet<LineItem> _lineItems;
    private ObjectSet<Order> _orders;
    #region Constructors
    public POCOAdventureWorksEntities()
        : base("name=AdventureWorksEntities", "AdventureWorksEntities")
    {
    }

    public POCOAdventureWorksEntities(string connectionString)
        : base(connectionString, "AdventureWorksEntities")
    {
    }
    #endregion

    #region ObjectSet Properties
    public ObjectSet<Contact> Contacts
    {
        get
        {
            return _contacts ?? (_contacts = base.CreateObjectSet<Contact>());
        }
    }

    public ObjectSet<LineItem> LineItems
    {
        get
        {
            return _lineItems ?? (_lineItems = base.CreateObjectSet<LineItem>());
        }
    }

    public ObjectSet<Order> Orders
    {
        get
        {
            return _orders ?? (_orders = base.CreateObjectSet<Order>());
        }
    }
    #endregion
}
#endregion


#region Entities
[DataContract(IsReference = true)]
public class LineItem
{
    [DataMember]
    public virtual Int32 SalesOrderID { get; set; }
    [DataMember]
    public virtual Int32 SalesOrderDetailID { get; set; }
    [DataMember]
    public virtual String CarrierTrackingNumber { get; set; }
    [DataMember]
    public virtual Int16 OrderQty { get; set; }
    [DataMember]
    public virtual Int32 ProductID { get; set; }
    [DataMember]
    public virtual Int32 SpecialOfferID { get; set; }
    [DataMember]
    public virtual Decimal UnitPrice { get; set; }
    [DataMember]
    public virtual Decimal UnitPriceDiscount { get; set; }
    [DataMember]
    public virtual Decimal LineTotal { get; set; }
    [DataMember]
    public virtual Guid rowguid { get; set; }
    [DataMember]
    public virtual DateTime ModifiedDate { get; set; }
    [DataMember]
    // Defines a navigation property to the Order object.
    public virtual Order Order { get; set; }
}

[DataContract(IsReference = true)]
public class Order
{
    [DataMember]
    public virtual Int32 SalesOrderID { get; set; }
    [DataMember]
    public virtual Byte RevisionNumber { get; set; }
    [DataMember]
    public virtual DateTime OrderDate { get; set; }
    [DataMember]
    public virtual DateTime DueDate { get; set; }
    [DataMember]
    public virtual Nullable<DateTime> ShipDate { get; set; }
    [DataMember]
    public virtual Byte Status { get; set; }
    [DataMember]
    public virtual Boolean OnlineOrderFlag { get; set; }
    [DataMember]
    public virtual String SalesOrderNumber { get; set; }
    [DataMember]
    public virtual String PurchaseOrderNumber { get; set; }
    [DataMember]
    public virtual String AccountNumber { get; set; }
    [DataMember]
    public virtual Int32 CustomerID { get; set; }
    [DataMember]
    public virtual Int32 ContactID { get; set; }
    [DataMember]
    public virtual Nullable<Int32> SalesPersonID { get; set; }
    [DataMember]
    public virtual Nullable<Int32> TerritoryID { get; set; }
    [DataMember]
    public virtual Int32 BillToAddressID { get; set; }
    [DataMember]
    public virtual Int32 ShipToAddressID { get; set; }
    [DataMember]
    public virtual Int32 ShipMethodID { get; set; }
    [DataMember]
    public virtual Nullable<Int32> CreditCardID { get; set; }
    [DataMember]
    public virtual String CreditCardApprovalCode { get; set; }
    [DataMember]
    public virtual Nullable<Int32> CurrencyRateID { get; set; }
    [DataMember]
    public virtual Decimal SubTotal { get; set; }
    [DataMember]
    public virtual Decimal TaxAmt { get; set; }
    [DataMember]
    public virtual Decimal Freight { get; set; }
    [DataMember]
    public virtual Decimal TotalDue { get; set; }
    [DataMember]
    public virtual String Comment { get; set; }
    [DataMember]
    public virtual Guid rowguid { get; set; }
    [DataMember]
    public virtual DateTime ModifiedDate { get; set; }
    [DataMember]
    public virtual OrderInfo ExtendedInfo { get; set; }
    [DataMember]
    // Defines a navigation property to the collection of LineItem objects.
    public virtual ICollection<LineItem> LineItems { get; set; }
    [DataMember]
    // Defines a navigation property to the Contact object.
    public virtual Contact Contact { get; set; }
}

[DataContract(IsReference = true)]
public class OrderInfo
{
    [DataMember]
    public string SalesOrderNumber { get; set; }
    [DataMember]
    public string PurchaseOrderNumber { get; set; }
    [DataMember]
    public string AccountNumber { get; set; }
    [DataMember]
    public string Comment { get; set; }
}

[DataContract(IsReference = true)]
public class Contact
{
    [DataMember]
    public virtual Int32 ContactID { get; set; }
    [DataMember]
    public virtual Boolean NameStyle { get; set; }
    [DataMember]
    public virtual String Title { get; set; }
    [DataMember]
    public virtual String FirstName { get; set; }
    [DataMember]
    public virtual String MiddleName { get; set; }
    [DataMember]
    public virtual String LastName { get; set; }
    [DataMember]
    public virtual String Suffix { get; set; }
    [DataMember]
    public virtual String EmailAddress { get; set; }
    [DataMember]
    public virtual Int32 EmailPromotion { get; set; }
    [DataMember]
    public virtual String Phone { get; set; }
    [DataMember]
    public virtual String PasswordHash { get; set; }
    [DataMember]
    public virtual String PasswordSalt { get; set; }
    [DataMember]
    public virtual String AdditionalContactInfo { get; set; }
    [DataMember]
    public virtual Guid rowguid { get; set; }
    [DataMember]
    public virtual DateTime ModifiedDate { get; set; }
    [DataMember]
    // Defines a navigation property to the collection of Order objects.
    public virtual ICollection<Order> Orders { get; set; }
}
#endregion

See Also

Concepts

Working with POCO Entities