Я часто беру классы, которые генерирует linq2sql, и создаю простой класс только для данных, например
public class myentity
{
public Guid id { get; set; }
public string name { get; set; }
// etc
}
Я не помещаю методы в эти классы и в основном использую их как вспомогательные классы, поэтому я могу довольно легко сериализовать в / из json и другие подобные действия.
Мой вопрос, должен ли я использовать структуру в этом случае, а не класс?
Кажется, имеет смысл сделать ее структурой, поскольку она более или менее является определением структуры, но я не знаю, будет ли производительность здесь идеальной, поскольку я часто передаю классы от метода к методу, и я не не нужно тонны копий, поскольку структуры являются типами значений.
Другая вещь, которую я делаю довольно часто, - это использование отложенного выполнения Linq2Sql для возврата моей собственной облегченной версии классов Linq2Sql, а не той, которую они генерируют. Я не совсем уверен, что использование структуры вместо класса могло бы оказать здесь негативное влияние на производительность.
пример того, как я бы использовал отложенное выполнение, выглядит примерно так
public IEnumerable<myentity> getEntities()
{
return from me in MyEntity return new myentity() { id = me.id, name = me.name };
}
public IEnumerable<myentity> getEntitiesThatStartWith(string s)
{
return from me in getEntities() where me.name.StartsWith(s);
}