Can you provide some more information on your first issue?
On your second point. Custom validation is needed here, because StateId and State will always have a value assigned. If you don't explicitly set StateId it will be initialized with Guid.Empty() and State will be initialized with the null entity not the null value. The RequiredAttribute is a .NET attribute that doesn't understand the null entity. It looks for a null value. So, the two options are doing what I'm doing or put a DevForce Verifier on the State property, which understands the null entity.
One of the key features in DevForce is that navigation properties are never null, to avoid NullReferenceExceptions when binding to the UI. You can learn more about this topic here: