Laden...

[gelöst] Entity Framework -> Entität aktualisieren -> Unicode

Erstellt von schaedld vor 14 Jahren Letzter Beitrag vor 14 Jahren 725 Views
schaedld Themenstarter:in
1.433 Beiträge seit 2006
vor 14 Jahren
[gelöst] Entity Framework -> Entität aktualisieren -> Unicode

verwendetes Datenbanksystem: SQL Server 2005

Guten Morgen zusammen
Ich habe folgendes Problem: Ich lese eine XML-Datei, die bestimmte Konfigurationen für einen Workflow beeinhaltet. Diese müssen als Unicode in die Datenbank geschrieben werden. Die Tabelle in der DB sieht wie folgt aus (ich hab gelesen dass das Feld das Unicode beinhalten soll, als NVARCHAR deklariert sein soll).


T_Id = bigint / Allow Nulls = false
ConfigurationType = nvarchar(100) / Allow Nulls = false
ConfigurationXml = nvarchar(MAX) / Allow Nulls = true

Nun das Model des EF weist genau die gleichen Eigenschaften auf, nur wenn ich dann die Entität aktualisiere


            ObjectQuery<WizardConfiguration> q = model.WizardConfiguration;
            IQueryable<WizardConfiguration> ql = q.Select(p => p);

            if(ql.Count<WizardConfiguration>() > 0) {
                WizardConfiguration wzToUpdate = ql.ToList<WizardConfiguration>()[index];
                wzToUpdate.ConfigurationXml = content;
                wzToUpdate.T_CreateDate = DateTime.Now;
                wzToUpdate.T_LastChange = DateTime.Now;
                wzToUpdate.T_User = WindowsIdentity.GetCurrent().Name;
                wzToUpdate.T_Version = wzToUpdate.T_Version++;
            } else {
                throw new NotImplementedException("Table has no content");
            }

            model.SaveChanges();

wird die ConfigurationXML zwar geschrieben, aber leider nicht als Unicode und dass hat auf die Configuration des Wizards nicht gewollte Auswirkungen.

Ich hoffe ihr könnte mir weiterhelfen und danke euch bereits fürs Feedback.

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

schaedld Themenstarter:in
1.433 Beiträge seit 2006
vor 14 Jahren

Eine kleine aber nicht performante Lösung habe ich gefunden, wäre auf Verbesserungsvorschläge trotzdem dankbar.


        private void writeXmlToDataBase(char[] content, int index) {
            WizardConfigurationDataContext context = new WizardConfigurationDataContext(Settings.Default.Buraut_AisConnectionString);
            
            IList<WizardConfiguration> wzconfigEntry = (from entry in context.WizardConfigurations select entry).ToList<WizardConfiguration>();

            WizardConfiguration wizardconfigurationsToUpdate = wzconfigEntry[index];
            for(int i = 0; i < content.Length; i++) {
                wizardconfigurationsToUpdate.ConfigurationXml += content[i];
            }
            wizardconfigurationsToUpdate.T_LastChange = DateTime.Now;
            context.SubmitChanges();            
        }

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

schaedld Themenstarter:in
1.433 Beiträge seit 2006
vor 14 Jahren

Lösung gefunden, es lag nicht am Encoding, sondern am falschen schreiben (AHHHHHHHHHHHHHHHH)

Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt

2.921 Beiträge seit 2005
vor 14 Jahren

Code schreiben? oder am XML zurückschreiben? Ich nehme an letzteres. 😉

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.