Linq to Sql - Создать БД и как с нее запросить? - PullRequest
1 голос
/ 25 февраля 2011

Я создаю таблицу, используя Linq

PODataContext db = new PODataContext();

String query = "create table myTable(text varchar(20) primary key)";

db.ExecuteCommand(query);

Затем я также вставил в нее данные.

String insQuery = "insert into myTable values('some text')";

db.ExecuteCommand(insQuery);

Моя проблема в том, как получить данные из этой таблицы?

Спасибо, Йохан

Ответы [ 3 ]

1 голос
/ 25 февраля 2011

Чтобы выполнить запрос к таблице базы данных, вам не нужно писать строковые команды и вызывать метод ExecuteQuery - это только для конкретных задач базы данных, которые вы не можете выполнить с помощью LINQ.Что вы можете сделать с помощью LINQ, так это написать запросы:

var query = from c in db.myTable
            where c.Id > 5
            select c;

foreach ( var c in query )
    Console.WriteLine( c );

Этот код берет все сущности из myTable с Id больше 5 (SELECT * FROM myTable WHERE Id > 5 in SQL) и записывает их все в консоль.

Но чтобы это работало, вам нужно создать правильное DataContext для вашей базы данных.Самый простой способ сделать это в Visual Studio - это Add New Item... -> LINQ to SQL Classes.Затем вам нужно подключиться к вашей базе данных в Server Explorer, развернуть Tables и перетащить нужные таблицы в окно конструктора.Visual Studio автоматически генерирует новый класс, производный от DataContext, который будет полезен для вашей базы данных (например, имеет такие свойства, как myTable).

Страница MSDN для LINQ to SQL

1 голос
/ 25 февраля 2011

Если вы собираетесь изменить (или создать!) Схему базы данных во время выполнения, обратите внимание, что LinqToSQL также не может обновить свое представление базы данных во время выполнения. Он может быть обновлен только путем перетаскивания в Visual Studio или с помощью SQLMetal через командную строку (довольно непонятный метод) и перекомпилирует ваше приложение.

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

1 голос
/ 25 февраля 2011
var query =from  c in new PODataContext().myTable
            select c;

ОБНОВЛЕНО

LINQ to SQL без использования конструктора реляционных объектов

Создайте класс с именем MyTable и украсьте атрибутом Table.

[Table(Name="myTable")]
public class MyTable

{
    [Column]
    public string Text 

}

Затем создайте следующий класс

public class PODataContext : DataContext
  {

   public Table<MyTable> myTables;

    public PODataContext(string connection): base(connection)

    {

    }

}

Теперь запросите вашу таблицу следующим образом

var query =from  c in new PODataContext().myTable
            select c;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...