Both. Or, it depends.
Writing less code is always a good thing, so relying on the default constructor is a fine idea. However, also think of the places where you'll use the class. Which of these seems easier?
Complex c = new Complex { Real = 1d, Imaginary = 0.5 };
Complex c = new Complex(1d, 0.5d);
The former is more explicit in that you can easily see which values are which properties, but its also longer to write.
Then there is also the matter of controlling object state. By using properties and a default constructor, you can't really declare mandatory properties. One could argue this isn't necessary for a data object, but depending on exactly how you're going to use it, it could be important.
Personally, I tend to create my data transfer objects (which are hardly objects) with empty constructors to make serialization easy, as well as convenience constructors that I use throughout the code. For for my value objects, I use only explicit constructors with mandatory properties so I can ensure valid state.