2017-01-31 9 views
0

私は、米国の州ごとに1つずつ、修正された行数のテーブルを持っています。 StateCode列に加えて、いくつかの状態ごとのデータもあります。しかし、行の数は変更されません。シードが既存のデータを消去しています

StateCode DataColum1 DataColumn2 etc 

デシベルを播種する場合、私は彼らが存在しない場合は51行で、テーブルを移入する必要があります。しかし、もしそうなら、私はテーブルだけを残す必要があります。

私が現在行っていることは、database-updateを行うたびにすべてのデータを消去しています。

context.StateLeadSettings.AddOrUpdate(s => s.StateCode, 
    new StateLeadSettings() { StateCode = "AK" }, 
    .... 
); 

これを変更する方法がわからないため、存在しない場合にのみ追加されます。

+0

は、ここで[良い資源](https://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods/)ですこれに。下にスクロールして[移行の入力]セクションに移動します。 – parameter

+0

- [DropCreateDatabaseIfModelChanges ](https://msdn.microsoft.com/en-us/library/gg679604(v = 1173).aspx) - 問題がありますか? –

答えて

1

は、このロジックを試してみてください:

var stateLeadSettings = new List<StateLeadSettings>{ 
    new StateLeadSettings() { StateCode = "AK" }, 
    .... 
}; 
var codes = stateLeadSettings.Select(x => x.StateCode).ToList(); 
var existed = context.StateLeadSettings.Where(x => codes.Contains(x.StateCode)) 
       .Select(x => x.StateCode).ToList(); 
context.StateLeadSettings.AddRange(stateLeadSettings 
       .Where(x => !existed.Contains(x.StateCode)).ToList()); 
context.SaveChanges(); 
関連する問題