как автоматически создать класс, совместимый с таблицей access?

#c# #linq #linq-to-sql #ms-access #ms-access-2007

#c# #linq #linq-to-sql #ms-access #ms-access-2007

Вопрос:

я хочу использовать Linq для подключения к базе данных access2007 (я не хочу использовать ado.net ).

я видел несколько примеров, но все они создают класс объекта, который я хочу импортировать из базы данных, например

  public class Company
 {
     public string Name
     { get; set; }

     public List ListEmp
     { get; set; }
 }

var EmpDetails = from comp in ListCompany
                          select new
                          {
                              Emp = (from emp in comp.ListEmp
                                     select new { Company = comp.Name, emp })
                          };
  

это легко, когда у вас небольшая база данных, но у меня есть база данных с 30 атрибутами в таблице, поэтому будет сложно создать класс специально для объекта из таблицы

итак, есть ли способ попроще, например, автоматически создать объект, совместимый с объектами из таблицы

если я не был ясен, пожалуйста, скажите мне, чтобы я мог прояснить это

Спасибо

Ответ №1:

Во-первых, обратите внимание, что LINQ-to-SQL не проверен (AFAIK) для использования в Access. Обычно это работает, но MMMV.

Лично я бы подошел к этому, импортировав (перенеся) таблицы из базы данных Access в экземпляр SQL Server Express и используя это для генерации модели (конечно, инструментарий может даже работать с Access, но я предполагаю, что они этого не делают — отсюда вопрос). Сгенерировав модель, вы должны иметь возможность указывать ее (во время выполнения — через строку подключения или connection) на вашу базу данных access.

Вы могли бы также подумать: почему бы не оставить его в качестве узла SQL Server Express — он хорошо работает и лучше поддерживается с точки зрения LINQ-to-SQL.

Обратите также внимание, что существуют другие инструменты, подобные LINQ-to-SQL, которые могут подойти для ваших целей; DbLinq, dapper-dot-net и т.д. — И несколько более мощных инструментов (EF, NHibernate, LLBLGen Pro и т.д.)

Ответ №2:

XPO, инструмент ORM от Developer Express, позволит вам создать .Создавайте классы Net непосредственно из вашей базы данных Access 2007/2010 и используйте Linq для создания запросов.

Хорошо то, что если вы хотите изменить серверную часть базы данных, скажем, например, что вы перенесли свои данные из Access на SQL Server, MySQL или PostgreSQL и т.д. Вам просто нужно изменить строку подключения к базе данных, а не ваш код.

Документация доступна онлайн.