1

EFとxmlの逆シリアル化で問題が発生しました。xmlファイルでEFオブジェクトをシリアル化することができましたが、それらのファイルの逆シリアル化でスタックしています。

私のシリアル化機能:

public static void SerializeIntoFile(object inputObject, string fileName)
{
    DataContractSerializer serializer = new DataContractSerializer(typeof(Form));

    using (XmlWriter wr = XmlWriter.Create(new StringBuilder(fileName)))
    {
        serializer.WriteObject(wr, inputObject);
    }
}

私の逆シリアル化関数:

 public static T DeserializeFromStream<T>(Stream stream)
    {
        DataContractSerializer dataContract = new DataContractSerializer(typeof(Form));
        return (T)dataContract.ReadObject(stream);
    }

この関数は、この関数を使用してSilverlightで呼び出されます。

private void FilePicker(object sender, System.Windows.RoutedEventArgs e)
{
    var filepicker = new OpenFileDialog();
    bool? userClickedOK = filepicker.ShowDialog();
    if (userClickedOK == true)
    {
        var form = SerialisationHelper.DeserializeFromStream<Form>(filepicker.File.OpenRead());
    }
}

そして入力xmlファイル:

<?xml version="1.0" encoding="utf-8"?>
<Form xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" xmlns="http://schemas.datacontract.org/2004/07/SuiviAT.WebService.EFModel">
    <EntityKey xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Data" z:Id="i2" xmlns="http://schemas.datacontract.org/2004/07/System.Data.Objects.DataClasses">
        <d2p1:EntityContainerName>
            SuiviATModelContainer
        </d2p1:EntityContainerName>
        <d2p1:EntityKeyValues i:nil="true" />
        <d2p1:EntitySetName>
            FormSet
        </d2p1:EntitySetName>
    </EntityKey>
    <Id>
        0
    </Id>
    <Rows>
        <Row z:Id="i3">
            <EntityKey xmlns:d4p1="http://schemas.datacontract.org/2004/07/System.Data" z:Id="i4" xmlns="http://schemas.datacontract.org/2004/07/System.Data.Objects.DataClasses">
                <d4p1:EntityContainerName>
                    SuiviATModelContainer
                </d4p1:EntityContainerName>
                <d4p1:EntityKeyValues i:nil="true" />
                <d4p1:EntitySetName>
                    RowSet
                </d4p1:EntitySetName>
            </EntityKey>
            <Form z:Ref="i1" />
            <FormId>
                0
            </FormId>
            <FormReference xmlns:d4p1="http://schemas.datacontract.org/2004/07/System.Data.Objects.DataClasses">
                <d4p1:EntityKey xmlns:d5p1="http://schemas.datacontract.org/2004/07/System.Data" i:nil="true" />
            </FormReference>
            <Id>
                0
            </Id>
            <Label>
                Couleur
            </Label>
            <Type>
                String
            </Type>
            <Value>
                Bleu
            </Value>
        </Row>
    </Rows>
</Form>

デシリアライズ後、返されるオブジェクトは子nullであり、理由はわかりません...

誰かが私を助けることができればそれはありがたいです!

ありがとう!

4

0 に答える 0