All these options are valid:
// not like (negate the like clause)
var filter1 = new RelationPredicateBucket(
new FieldLikePredicate(CustomerFields.CustomerId, null, "A%", true));
adapter.FetchEntityCollection(customers, filter1);
// not like api2 (negate the predicaste)
customers.Clear();
var filter2 = new RelationPredicateBucket();
var likeClause2 = new FieldLikePredicate(CustomerFields.CustomerId, null, "A%", false);
likeClause2.Negate = true;
filter2.PredicateExpression.Add(likeClause2);
adapter.FetchEntityCollection(customers, filter2);
// not like api3 (natural language filter construction)
var filter3 = new RelationPredicateBucket(
!(CustomerFields.CustomerId % "A%"));
adapter.FetchEntityCollection(customers, filter3);
// not like custom dbfunctioncall
var filter4 = new RelationPredicateBucket(
new FieldCompareExpressionPredicate(
CustomerFields.CustomerId
.SetExpression(
new DbFunctionCall("{0} NOT LIKE {1}", new object[]{ CustomerFields.CustomerId, "A%" })),
null, ComparisonOperator.None, null));
adapter.FetchEntityCollection(customers, filter3);
// not like linq
var metaData = new LinqMetaData(adapter);
var customersLinq = (from c in metaData.Customer
where !c.CustomerId.StartsWith("A")
select c).ToList();
// using QuerySpec
var qf = new QueryFactory();
var q = qf.Customer.Where(CustomerFields.CustomerId.StartsWith("A"));
var results = adapter.FetchQuery(q);