Этот вопрос является несколько общим, таким образом, вот общий ответ:
В основном, запросы занимают больше времени, когда MySQL имеет тонны строк для сортировки.
Делают это:
Выполнение ОБЪЯСНЕНИЕ на каждом из запросов (JOIN'ed один, тогда Подзапрошенный), и сообщение результаты здесь.
я думаю, видя, что различием в интерпретации MySQL тех запросов был бы полезный опыт для всех.
Вы можете очень легко написать свои собственные классы, используя Linq-to-SQL - просто нужно нарисовать ваши классы некоторыми атрибутами.
Например, это очень простая таблица, которая есть у меня в одном из моих проектов, и она отлично работает с Linq-to-SQL:
[Table(Name = "Categories")]
public class Category : IDataErrorInfo
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
public int Id { get; set; }
[Column] public string Name { get; set; }
[Column] public string ExtensionString { get; set; }
}
Код был очень простым, особенно если вы делаете так, чтобы имена ваших свойств совпадали с именами таблиц (вы не обязательно).
Тогда вам просто понадобится Репозиторий для подключения к БД:
class CategoryRepository : ICategoryRepository
{
private Table<Category> categoryTable;
public CategoryRepository(string connectionString)
{
categoryTable = (new DataContext(connectionString)).GetTable<Category>();
}
}
Конечно, это еще не все, но это показывает вам самые основы, и это несложно сделать, когда вы поймете Это. Таким образом, у вас будет 100% контроль над вашими классами и вы по-прежнему сможете использовать преимущества Linq-to-SQL.
Я узнал об этом подходе из Pro ASP.NET MVC Framework , замечательной книги.
] Если вы хотите узнать больше, все мои классы Linq-to-SQL были написаны с нуля в одном из моих проектов, вы можете просмотреть здесь .
особенно если вы делаете так, чтобы имена ваших свойств совпадали с именами таблиц (это необязательно).Тогда вам просто нужен Репозиторий для подключения к БД:
class CategoryRepository : ICategoryRepository
{
private Table<Category> categoryTable;
public CategoryRepository(string connectionString)
{
categoryTable = (new DataContext(connectionString)).GetTable<Category>();
}
}
Конечно, это еще не все, но это показывает вам самые основы, и это несложно сделать, когда вы это поймете. Таким образом, у вас будет 100% контроль над вашими классами и вы по-прежнему сможете использовать преимущества Linq-to-SQL.
Я узнал об этом подходе из Pro ASP.NET MVC Framework , замечательной книги.
] Если вы хотите узнать больше, все мои классы Linq-to-SQL были написаны с нуля в одном из моих проектов, вы можете просмотреть здесь .
особенно если вы делаете так, чтобы имена ваших свойств совпадали с именами таблиц (это не обязательно).Тогда вам просто понадобится Репозиторий для подключения к БД:
class CategoryRepository : ICategoryRepository
{
private Table<Category> categoryTable;
public CategoryRepository(string connectionString)
{
categoryTable = (new DataContext(connectionString)).GetTable<Category>();
}
}
Конечно, это еще не все, но это показывает вам самые основы, и это несложно сделать, как только вы это поймете. Таким образом, у вас будет 100% контроль над вашими классами и вы по-прежнему сможете использовать преимущества Linq-to-SQL.
Я узнал об этом подходе из Pro ASP.NET MVC Framework , замечательной книги.
] Если вы хотите узнать больше, все мои классы Linq-to-SQL были написаны с нуля в одном из моих проектов, вы можете просмотреть здесь .
но это показывает вам самые основы, и это несложно сделать, как только вы это поймете. Таким образом, у вас будет 100% контроль над вашими классами и вы по-прежнему сможете использовать преимущества Linq-to-SQL.Я узнал об этом подходе из Pro ASP.NET MVC Framework , замечательной книги.
] Если вы хотите узнать больше, все мои классы Linq-to-SQL были написаны с нуля в одном из моих проектов, вы можете просмотреть здесь .
но это показывает вам самые основы, и это несложно сделать, как только вы это поймете. Таким образом, у вас будет 100% контроль над вашими классами и вы по-прежнему сможете использовать преимущества Linq-to-SQL.Я узнал об этом подходе из Pro ASP.NET MVC Framework , замечательной книги.
] Если вы хотите узнать больше, все мои классы Linq-to-SQL были написаны с нуля в одном из моих проектов, вы можете просмотреть здесь .
Чтобы избежать перетаскивания, вы можете взглянуть на SqlMetal.exe .
Однако похоже, что вы действительно запрашиваете Persistence Ignorance, а я не уверен, что это возможно с L2S - это, конечно, невозможно с LINQ to Entities до .NET 4 ...
Однажды я написал сообщение в блоге об использовании SqlMetal.exe и последующем изменении сгенерированной схемы - возможно, вы найдете это полезным, хотя у него другая основная мотивация.
У меня есть пара руководств по CodeProject, в которых рассказывается, как это сделать, включая то, как обрабатывать отношения (M: M, 1: M, M: 1) в объектно-ориентированном объекте. и синхронизировать их при внесении обновлений: