[RelationalExplicitMapping("CurrentCompany", typeof(Company), "CurrentCompanyID")]
[RelationalExplicitMapping("PreviousCompany", typeof(Company), "PreviousCompanyID")]
public class Contact
{
public int ContactID;
[RelationalMemberInfo(Length = 50)]
public string FirstName;
[RelationalMemberInfo(Length = 50)]
public string LastName;
[RelationalMemberInfo(IsIntZeroConvertedToNull = true)]
public int CurrentCompanyID;
[RelationalMemberInfo(IsIntZeroConvertedToNull = true)]
public int PreviousCompanyID;
}
public class Company
{
public int CompanyID;
[RelationalMemberInfo(Length = 50)]
public string CompanyName;
}
public class ContactManager : ReFlex.Data.ManagerBase<Contact>
{
public List<Contact> GetJohns(string companyName)
{
if (string.IsNullOrEmpty(companyName))
throw new ArgumentNullException("companyName");
Relationship currentCompanyRelationship = new Relationship(typeof(Company), typeof(Contact), "CurrentCompany", RelationshipTypeEnum.StrongParent);
Criterion<Contact> criterion = new Criterion<Contact>(CriteriaOperatorEnum.And)
.Add("FirstName", "John", ComparisonOperatorEnum.Like, CriteriaOperatorEnum.And)
.Add(new Field<Company>("CompanyName", "CurrentCompany"), companyName, ComparisonOperatorEnum.Equals, CriteriaOperatorEnum.And);
Ordering ordering = new Ordering()
.Add<Contact>("LastName", Direction.Ascending)
.Add<Contact>("FirstName", Direction.Ascending);
List<Contact> contacts;
using (ObjectFactory<Contact> mapper = new ObjectFactory<Contact>())
contacts = mapper.GetDataObjects(criterion, ordering, currentCompanyRelationship);
return contacts;
}
}