Создать таблицу с LINQ To SQL / SQL CE - PullRequest
1 голос
/ 26 января 2011

Я новичок в SQL и попытался создать таблицу с LINQ To SQL.

Сначала я создаю объект DataContext:

        const string connStr = @"Spiri_SQL_CE_DB.sdf";
        _dc = new Spiri_SQL_CE_DB(connStr);

И я пытаюсь создать таблицу БД следующим способом:

public void CreateUserTab(string nick)
{        
    string sqlCdm = string.Format(CultureInfo.InvariantCulture, "CREATE TABLE {0} (Nick nvarchar(30) PRIMARY KEY, AzetID nvarchar(30), RpText nvarchar(300), Your bit, Sing nvarchar(30), Time DateTime, OriginalTxt nvarchar(300))",nick);

    _dc.ExecuteCommand(sqlCdm);

    _dc.SubmitChanges();
}

1.

Первая проблема заключается в том, что я использую этот метод, создаю таблицу и закрываю приложение. Но новой созданной таблицы нет в базе данных.

Я думаю, что изменения, которые я делаю в базе данных, не сохраняются в БД. Если я проверяю файл БД в обозревателе серверов, я не вижу новую таблицу БД.

2. И вторая проблема.

Например, у меня есть класс, который представляет таблицу БД, вот она:

[Table]
public class User
{
    [Column(IsPrimaryKey = true)]
    public string Nick { get; set; }

    [Column]
    public string AzetId { get; set; }

    [Column]
    public String RpText { get; set; }

    [Column]
    public bool Your { get; set; }

    [Column]
    public string Sing { get; set; }

    [Column]
    public DateTime Time { get; set; }

    [Column]
    public string OriginalTxt { get; set; }
}

Я знаю, что возможно отображение таблицы SQL на класс CLR Tabel. Возможно ли создать таблицу БД (с конкретным именем) с этим классом?

Я хотел бы пропустить команду SQL в своем коде, возможно ли создать таблицу БД из объекта CLR?

3.

И последний вопрос:

Сценарий:

У меня есть SQL Compact DB файл, он состоит из одной таблицы User1 типа Table<User>, я генерирую с SqlMetal * dbml файл.

Тогда я из кода создаю еще одну таблицу User2, User3 ... UserN.

Закрыть приложение.

Возможно ли иметь доступ к таблице БД User2 ... UserN? Или я должен создать еще один файл DBML?

1 Ответ

0 голосов
/ 03 сентября 2014

1: Используйте полный путь к файлу sdf в строке подключения, чтобы избежать путаницы с расположением файла.

2: Да, вы можете вызвать _dc.CreateDatabase, и ваши таблицы будут созданы,(Класс должен быть включен как объект Table в ваш DataContext

3: почему бы вместо этого не создать требуемый код в файле .cs?

...