After further investigation it looks as if the entity has to be fetched first to set its fk field value to null
DataAccessAdapter adapter = new DataAccessAdapter();
Protocol641Entity data = new Protocol641Entity(2);
adapter.FetchEntity(data);
data.SetNewFieldValue((int)Protocol641FieldIndex.CurrentRequest_ID, null);
adapter.SaveEntity(data);
the above code works
DataAccessAdapter adapter = new DataAccessAdapter();
Protocol641Entity data = new Protocol641Entity(2);
data.IsNew = false;
data.SetNewFieldValue((int)Protocol641FieldIndex.CurrentRequest_ID, null);
adapter.SaveEntity(data);
this one doesn't. Is this behaviour intended or is it a bug?