C # - »спользование Linq дл¤ SQL с последовательностью XML

≈сть кое-что, что ¤ не совсем понимаю при использовании Linq дл¤ SQL и сериализации XML в некоторых свойствах моего объекта.

–егул¤рно ¤ создавал свои таблицы, а затем использовал Linq дл¤ SQL дл¤ генерации всех моих классов. Ќо теперь, когда ¤ сериализую некоторые из свойств моих классов, при создании таблиц базы данных, ¤ определ¤ю эти свойства как varchar (дл¤ строки XML) вместо фактического типа, которым они ¤вл¤ютс¤. “аким образом, автоматически создаваемые классы создаютс¤ с строковыми типизированными свойствами вместо реальных классов.

≈сть ли способ сказать Linq примен¤ть мою де / сериализацию автоматически при вставке / извлечении объектов из базы данных? » сохранить исходный тип дл¤ моих сериализованных свойств в классах, созданных автоматически Linq?

 ласс, например

ќбратите внимание, что classBProp имеет тип ClassB.

class ClassA
{
    private string name;
    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    private ClassB classBProp; // <-- This is something i'm serializing
    public ClassB ClassBProp
    {
        get { return classBProp; }
        set { classBProp = value; }
    }

    public ClassA()
    {
        classBProp = new ClassB();
    }
}

“аблица дл¤ класса

«десь ClassBProp имеет тип varchar. ѕоэтому Linq to SQL генерирует класс со свойством string.

CREATE TABLE [dbo].[ClassA] (
[Id]         INT           NOT NULL,
[Name]       VARCHAR (50)  NULL,
[ClassBProp] VARCHAR (MAX) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);

c#,xml,serialization,linq-to-sql,xml-serialization,

0

Ответов: 1


1 прин¤т

я не думаю, что это возможно.

¬ подобных ситуаци¤х вам придетс¤ использовать другой объект, который скрывает тот факт, что вы храните объект в виде строки Xml.

“ак:

  1. ClassA будет иметь свойство типа ClassB.
  2. ClassC будет фактическим классом linq. ќн выгл¤дит так же, как ClassA, за исключением того, что он не обладает свойством типа ClassB, а скорее полем типа string.
  3. ѕри сохранении сопоставьте ClassA с ClassC. «десь вы сериализуете ClassB как Xml.
  4. ѕри чтении сопоставьте ClassC с ClassA. «десь вы deserialize xml как ClassB.

Ќадеюсь, это поможет.

C #, XML, сериализаци¤, LINQ к SQL, XML-сериализаци¤,
Похожие вопросы