Τι θα ήταν ο καλύτερος τρόπος για να εφαρμόσετε προσαρμοσμένα μορφοποίηση για αξίες των ακινήτων τάξη μου;

ψήφοι
0

Η κατάστασή μου είναι δουλεύω με μια βάση δεδομένων κληρονομιά που έχει δύο χαρακτηριστικά που είναι κοινά για τα περισσότερα από τα κώδικα - υπάρχουν πολλοί τιμές που έχουν αποθηκευτεί με σταθερό μήκος που είναι παραγεμισμένο με μηδενικά μπροστά, καθώς επίσης και σταθερού μήκους με κενό διάστημα στο τέλος . Πολύ ενοχλητικό να ασχοληθεί με, γι 'αυτό προσπαθώ να καταλάβω ποια θα ήταν η πιο καθαρή προσέγγιση για τη μορφοποίηση αυτών των αξιών.

Κύριος στόχος μου αυτή τη στιγμή είναι σε μορφοποίηση των όψει μοντέλα / DTOS. Είμαι απλά ρωτώντας τη βάση δεδομένων με Dapper με ερωτήσεις ή αποθηκευμένες διαδικασίες, οι οποίες να αντιστοιχιστεί σε τάξη ΟΤΟ μου, που παίρνει υπηρέτησε ως Json μέσω WebAPI μου.

Αυτή τη στιγμή αυτό είναι ό, τι πολλοί λεπτομέρεις μοντέλου μου καταλήγουν να μοιάζουν με:

    public string PurchaseOrderNumber
    {
        get => _purchaseOrderNumber.TrimStart('0');
        set => _purchaseOrderNumber = value;
    }

Αυτό ακριβώς καταλήγει να επαναλαμβάνεται παντού. Θα ήταν ωραίο να είναι σε θέση να κάνει κάτι σαν αυτό:

[TrimZeros]
public string SupplierName { get; set; }

Θα μπορούσα επίσης το ύψος κάνω μια λειτουργία που κάνει ακριβώς αυτό το SQL, τότε κάνουν αυτό μια ευθύνη όλα μου τα ερωτήματα SQL / αποθηκευμένες διαδικασίες. Αυτό λειτουργεί όταν είμαι με τη χρήση κάτι ελαφρύ όπως Dapper, αλλά όχι τόσο πολύ όταν είμαι με τη χρήση Οντότητα πλαίσιο.

Τυχόν προτάσεις για το πώς να προσεγγίσουμε το θέμα;

Δημοσιεύθηκε 08/11/2018 στις 00:08
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
1

Θα μπορούσατε να χρησιμοποιήσετε σιωπηρή χύτευσης και ένα βοηθό κατηγορίας:

public class LegacyString
{
     public string TrimmedValue {get; }

     public LegacyString(string value)
     {
         this.TrimmedValue = value?.TrimStart('0');
     }

     public static implicit operator string(LegacyString legacy)
         => legacy?.TrimmedValue; 

     public static implicit operator LegacyString(string legacyValue)
         => new LegacyString(legacyValue);

     public override string ToString() => this.TrimmedValue;
}

Στη συνέχεια, το μόνο που έχετε να κάνετε στην κύρια clasess σας

public LegacyString PurchaseOrderNumber {get;set;}

και μπορείτε να το χρησιμοποιήσετε σαν να ήταν ένα string σε μια ανάθεση

myObj.PurchaseOrderNumber = "00001345";

σε μια έκφραση για να πάρει την τιμή

string poNumber = myObj.PurchaseOrderNumber;

το μόνο πράγμα που θα χάσουν είναι η δυνατότητα να δηλώσει poNumberως varκαι αναμένουμε ότι θα είναι ένα string. Αλλά ακόμα και τότε, αν χρησιμοποιείτε poNumber, όπου μια σειρά αναμενόταν η μετατροπή implict θα φροντίσει για σένα.

Απαντήθηκε 08/11/2018 στις 05:31
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more