Атрибут DataContract требуется для DataContractSerializer
, но он не будет работать с другими сериализаторами, такими как BinarySerializer
, ViewStateSerializer
и другими сериализаторами.Чтобы заставить их работать, вы должны использовать атрибут Serializable
, чтобы применить их.Теперь, как это сделать легко ...
Когда я хочу расширить свои сущности Linq2Sql, я обычно злоупотребляю тем фактом, что они являются ВСЕМИ частичными классами.Поэтому я создаю файл Linq2SqlExtensions.cs
public partial class LinqEntity
{
//extensions go here
}
и другие расширения (например, расширения контекста данных).Теперь, если у вас много сущностей, вы можете написать небольшую программу (даже в powershell) для извлечения всех имен классов из вашего пространства имен / сборок Linq2Sql (молю, у вас они есть в другой сборке), создать этот файл для вас и автоматически обновить его дляВы каждый раз запускаете его из командной строки VisualStudio (или сценария msBuild).
что-то вроде
var entities = Assembly.Load("MyLinqAssembly").GetTypes().Where(p=> p.IsDefined(typeof(TableAttribute), true));
WriteEntityCsFile(entities);