Можно ли использовать Linq-SQL без перетаскивания? - PullRequest
5 голосов
/ 07 декабря 2009

Если я хочу использовать Linq-SQL, мне также нужно перетащить таблицу БД на поверхность конструктора, чтобы создать классы сущностей.

Мне всегда нравится полный контроль в моем приложении, и мне не нравятся классы, созданные dotnet.

Можно ли обеспечить эту связь между Linq и БД, используя мои собственные классы сущности уровня доступа к данным?

Как мне это сделать?

Ответы [ 3 ]

7 голосов
/ 07 декабря 2009

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

1 голос
/ 07 декабря 2009

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

Учебное пособие по LINQ: отображение таблиц на объекты

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

1 голос
/ 07 декабря 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...