2011-01-16 3 views
1

Я пытаюсь перейти от ASP Classic к asp.net. Я следил за учебниками, чтобы получить Entity Framework и LINQ для подключения к моей тестовой базе данных, но у меня возникают трудности с выяснением ExecuteQuery(). Я считаю, что проблема в том, что мне нужна «сущность-класс» для моей базы данных, но я не могу понять, как это сделать. Вот мой простой код:Использование ExecuteQuery() с каркасом сущности, класс сущности

Dim db as New TestModel.TestEntity 
Dim results AS IEnumerable(OF ???) = db.ExecuteQuery(Of ???)("Select * from Table1") 

С майкрософт примера сайта, они используют класс сущностей с именем клиентов, но я не понимаю, что это значит.

+0

Если вы отправляете код, XML или образцы данных, ** пожалуйста ** выделите эти строки в текстовом редакторе и нажмите кнопку «образцы кода» ({}) на панели инструментов редактора, чтобы красиво отформатировать и выделить синтаксис! –

ответ

1

Entity Framework поставляется с визуальным дизайнером. В этом дизайнере вы подключаетесь к существующей базе данных и выбираете все таблицы (и, возможно, виды) из своей базы данных, с которой хотите работать.

Из этого выбора EF будет генерировать классы сущностей по одному для каждой вашей таблицы, например. если у вас есть таблица Customers, вы получите класс Customer, если у вас есть таблица Products, вы получите класс Product.

Эти классы представляют (по умолчанию) структуру вашей таблицы 1: 1 - например. каждый столбец в вашей таблице преобразуется в свойство класса.

Как только у вас есть это, вы больше не имеете дело с операторами SQL и такими вещами, как ExecuteQuery() - вы оставляете это для EF для обработки.

Вы просто просите, что вам нужно, например. все ваши клиенты из данного состояния:

var ohioCustomers = from c in dbContext.Customers 
        where c.State = "OH" 
        select c; 

Это заявление будет возвращать IEnumerable<Customer> - список клиентов, которые соответствуют вашим критериям поиска.

+0

Я могу выполнять запросы LINQ, но я не могу заставить executequery() работать. Я считаю, что это связано с классами сущностей. Я выбрал таблицы в EF, и я думал, что классы - это имена, обозначенные в EF, но они не распознаются, т.е. IEnumerable (Of testtable) – sfreelander

+0

** Почему ** вы даже хотите ExecuteQuery()? Зачем?? С EF вы в основном ** не ** обойдете выполнение команд SQL напрямую .... –

+0

... да, но для тех случаев, когда простая GROUP BY в чистом SQL занимает меньше времени, чем EF, было бы неплохо выполнить чистый SQL-код аналогично LINQ to SQL позволяет ... – Smithy