Есть что-то, что я не совсем понимаю при использовании Linq для SQL и сериализации XML на свойств моего объекта.C# - Использование Linq to SQL с сериализацией XML
Регулярно я создавал свои таблицы, а затем использовал Linq to 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)
);
Хорошо спасибо! Я думал, что есть более правильный способ сделать это. Но если это так, то я в порядке. Чтобы уточнить – moonlander
Извините, отправил по ошибке. Просто, чтобы уточнить, при сохранении я просто создаю экземпляр ClassC, а затем dataContext.ClassAs.InsertOnSubmit (classCInstance). – moonlander
И для чтения мне нужно будет создать совершенно новую коллекцию десериализованных объектов, чтобы отразить сериализованные. Или примените метод десериализации для каждого объекта, когда я хочу получить к нему доступ. Я понял? – moonlander