2016-07-30 3 views
0

私はEntity FrameworkをUWPで学習しています。私はDbContextからテーブルを削除してテーブルを削除しようとしました。移行後にコードを実行すると、UWPでは主キーの削除がサポートされていないというエラーが発生しました。 この記事(https://docs.efproject.net/en/latest/providers/sqlite/limitations.html)では、sql(string)メソッドの使用を推奨しています。 この記事、https://msdn.microsoft.com/en-us/data/jj592907.aspxには、私が従うことを試みている例があります。Entrop FrameworkコアとUWPのテーブルをドロップ

using (var context = new BloggingContext()) 
     { 
      var blogs = context.Blogs.SqlQuery("SELECT * FROM dbo.Blogs").ToList(); 
     } 

私は参照を見つけることができません。 私はSQL文を使う考えが好きです。 別のstackoverflowの記事、How to drop a table in Entity Framework Code First?で、私は理解していません: "[DateStamp] _InitialCreate.csクラスのDownメソッドでDropTableステートメントを書き、テーブルが削除されます"。私の問題に関連するIsit。もしそうなら、私はどのように実装しますか? ありがとうございます。

答えて

1

DbContextからテーブルを削除して削除しようとしました。

あなたは、テーブルをドロップするdb.Database.ExecuteSqlCommandを使用することができます。

//you have to use this namespace 
using Microsoft.EntityFrameworkCore; 

using (var db = new BloggingContext()) 
{ 
    db.Database.ExecuteSqlCommand("DROP TABLE [Blogs]"); 
} 

私は理解していない: "[日付スタンプ]の下の方法でDropTable文を書く_InitialCreate.csクラス

<DateStamp>_<MigrationName>.csは、マイグレーション(Add-Migration MigrationName)によって生成され、Migrationsフォルダーにあります。このクラスファイル内には、Downメソッドがあります。

いつもdb.Database.Migrate()(通常App.xaml.csファイル)を呼び出します。 SQLiteはテーブル__EFMigrationsHistoryをチェックして<DateStamp>_<MigrationName>.csファイルが実行されたかどうかを確認します。

enter image description here

そしてまた、あなたはあなたの条件に応じて移行を行うために内部のコードを変更することができます:あなたは、手動で再び移行を実行するためのファイルを、次の中 [Migration("<TimeStamp>_<MigrationName>")]のタイムスタンプを変更することができます。

関連する問題