Inferring very dangerous (impossible)? Or am I missing something (about sure)?

I am coming again in inferring, in this post I noticed that it was uncomfortable now I have discovered something that seems very dangerous. I am new to Radzen so surely I am missing something, if so please excuse me in advance.
When Radzen infers database creates entities and if one table has more than one id which refers to the same external table, numbers the corresponding property. Example:
Table: Document.idOurStoreAddress ---> Document class: Document.Address
Table: Document.idSubjectAddress ---> Document class: Document.Address1
If I decide not to change what Radzen does, in my code I could have:
var OurStoreAddress = myDoc.Address;
var SubjectAddress = myDoc.Address1;
In my table I added Document.idShipToAddress and placed it between the previous two. I inferred the database and Radzen created this situation:
Table: Document.idOurStoreAddress ---> Document class: Document.Address
Table: Document.idShipToAddress ---> Document class: Document.Address1
Table: Document.idSubjectAddress ---> Document class: Document.Address2
My var SubjectAddress = item.Address1; now is buggy!!!!!! The variable contains ShipToAddress not SubjectAddres. Do you imagine someone which realizes what happened after some time? NTimes nightmare. In documentation I have found no documentation suggesting to add new properties at the end because if you not realize in the day by day work that you have another id which points to the same external table you get in very Big trouble. I thought that I was missing something, it was not possible, someone should have posed the question before. I have done a thing which happens frequently: grouped for some homogeneity some properties. Could happen also if the owner of the db added such a property where he liked without having to tell me. Suddenly the program would have stopped to work and debug would have been tremendously difficult. Reply in the mentioned post did not help me, I thought probably I posed a stupid question, there is a point where to store my renamed properties: the context. I renamed Document.Address to Document.OurStoreAddress, Document.Address1 to Document.ShipToAddress, … Address.Documets_On_OurStoreAddress, Address.Documents_On_ShipToAddres and so on. I hoped that Radzen would have taken into account my changes but when inferred again loosed everything; expectable, documentation says clearly that it is regenerated, I had to use a custom partial class but it should not help anyway.
Now I come to the point: How is usage of radzen inferring in long term development intended for? Is it intended to be used only once (as visual studio does with database first to code functionality)? Impossible because I would have to manually implements routines of Service and would not be updated when new releases happen. Many times? Impossible because inferring produces dynamic mappings, too dangerous, I would have to move all my entities to custom partial class and fix entities, context and service each time. So, what to do in long term development? What people is doing to mitigate these troubles?
Just a minor question but important too; is there something else not expectable and not documented? Inferring did not place strings lengths in entities so migration created all columns as nvarchar(max).Why ignores them? Now I have to scan all my strings of all my entities and specify the length manually. :sob: are many!
Thanks again