2012-01-15 6 views
0

Я пытаюсь использовать SQL Server CE на Windows Phone Mango. Вот мой DataContext:SQL Server CE таблица не найдена ошибка

public class FooDataContext : DataContext 
{ 
    private static readonly string DB_CONNECTION_STRING = "Data Source=isostore:/foo.sdf"; 

    // Pass the connection string to the base class. 
    public FooDataContext() : base(DB_CONNECTION_STRING) 
    { } 

    // can this be a property? 
    public Table<Foo> Items; 

    public void ClearDatabase() 
    { 
     if (DatabaseExists()) 
     { 
      DeleteDatabase(); 
     } 
    } 

    public void EnsureDatabaseExists() 
    { 
     if (!DatabaseExists()) 
     { 
      CreateDatabase(); 
      SubmitChanges(); 
     } 
    } 
} 

В конструкторе главной страницы, я называю EnsureDatabaseExists(). Если я изменил схему, я также включить вызов ClearDatabase():

//fooData.ClearDatabase(); 
fooData.EnsureDatabaseExists(); 

Foo колонны «s являются int, double и DateTime. Когда я запустить приложение без ClearDatabase() вызова, я получаю следующее сообщение об ошибке, как только я пытаюсь получить доступ fooContext.Items:

Указанная таблица не существует. [Foo]

Что здесь происходит? Если я только что установил приложение, все будет хорошо.

+0

Что 'SubmitChanges();' делать? Если база данных уже существует, эта строка не будет выполнена. –

ответ

1

Структуры отступающей таблицы для Linq To SQL DataContext создается только тогда, когда CreateDatabase() вызываются, или когда вы явно обновить схему с помощью метода DatabaseSchemaUpdater.Execute().

Я подозреваю, что происходит в вашем случае, заключается в том, что вы добавляете новый тип сущности в свою модель данных, однако вы фактически не обновляете схему через DatabaseSchemaUpdater. Это приводит к тому, что Linq To SQL генерирует запрос, который ссылается на таблицу, которая еще не была создана в ядре базы данных.

Я бы рекомендовал вам проверить класс DatabaseSchemaUpdater, если вы хотите иметь возможность обрабатывать изменения схемы в своем приложении.

http://msdn.microsoft.com/en-us/library/hh133477(v=VS.95).aspx

Смежные вопросы