Действительно ли возможно использовать Linq-SQL без перетаскивания?

Этот вопрос является несколько общим, таким образом, вот общий ответ:

В основном, запросы занимают больше времени, когда MySQL имеет тонны строк для сортировки.

Делают это:

Выполнение ОБЪЯСНЕНИЕ на каждом из запросов (JOIN'ed один, тогда Подзапрошенный), и сообщение результаты здесь.

я думаю, видя, что различием в интерпретации MySQL тех запросов был бы полезный опыт для всех.

5
задан Tebo 7 December 2009 в 11:38
поделиться

3 ответа

Вы можете очень легко написать свои собственные классы, используя 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 были написаны с нуля в одном из моих проектов, вы можете просмотреть здесь .

7
ответ дан 14 December 2019 в 01:10
поделиться

Чтобы избежать перетаскивания, вы можете взглянуть на SqlMetal.exe .

Однако похоже, что вы действительно запрашиваете Persistence Ignorance, а я не уверен, что это возможно с L2S - это, конечно, невозможно с LINQ to Entities до .NET 4 ...

Однажды я написал сообщение в блоге об использовании SqlMetal.exe и последующем изменении сгенерированной схемы - возможно, вы найдете это полезным, хотя у него другая основная мотивация.

1
ответ дан 14 December 2019 в 01:10
поделиться

У меня есть пара руководств по CodeProject, в которых рассказывается, как это сделать, включая то, как обрабатывать отношения (M: M, 1: M, M: 1) в объектно-ориентированном объекте. и синхронизировать их при внесении обновлений:

Учебник LINQ: Сопоставление таблиц с объектами

Учебник LINQ: Добавление / обновление / удаление данных

1
ответ дан 14 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: