[Table(Name="Contacts")]
[InheritanceMapping(Code = "Customer", Type = typeof(CustomerContact))]
[InheritanceMapping(Code = "Supplier", Type = typeof(SupplierContact))]
[InheritanceMapping(Code = "Shipper", Type = typeof(ShipperContact))]
[InheritanceMapping(Code = "Employee", Type = typeof(Contact), IsDefault = true)]
public class Contact {
[Column(IsPrimaryKey=true)] public int ContactID;
[Column(Name="ContactName")] public string Name;
[Column] public string Phone;
[Column(IsDiscriminator = true)] public string ContactType;
}

public class CompanyContact : Contact {
	[Column(Name="CompanyName")] public string Company;
}

public class CustomerContact : CompanyContact {
}

public class SupplierContact : CompanyContact {
}

public class ShipperContact : CompanyContact {
public string Shipper {
get { return Company; }
set { Company = value; }
}
}
