update-database を実行すると、次の応答が返されます。
PM> 更新データベース -詳細
スタートアップ プロジェクト 'BestOrders' を使用します。
NuGet プロジェクト 'BestOrders' を使用します。
'-Verbose' フラグを指定して、ターゲット データベースに適用されている SQL ステートメントを表示します。
ターゲット データベースは次のとおりです: 'Orders.sdf' (データソース: Orders.sdf、プロバイダー: System.Data.SqlServerCe.4.0、オリジン: 構成)。
保留中のコードベースの移行はありません。
シード メソッドを実行します。
午後>
これで、シード メソッド (完全なコードを以下に示します) が明らかに実行されます。時間はそれほどかかりませんが、データベースにはデータがありません。私は何が欠けていますか?
Imports System
Imports System.Data.Entity
Imports System.Data.Entity.Migrations
Imports System.Linq
Namespace Migrations
Friend NotInheritable Class Configuration
Inherits DbMigrationsConfiguration(Of OrdersContext)
Public Sub New()
AutomaticMigrationsEnabled = True
End Sub
Protected Overrides Sub Seed(context As OrdersContext)
Const ItemCount As Integer = 100
Const SupplierCount As Integer = 5
Const PartsRequestCount As Integer = 25
Const LocationsCount As Integer = 3
Const MaxQuantity As Integer = 5
Const Seed As Integer = 10
Const DeliveryChance As Decimal = 0.5
Dim Delivery() As Integer = {10, 90}
Dim DiscChance(,) As Decimal = {{0.05, 0.07, 0.08},
{0.025, 0.035, 0.05}}
Dim PriceRange() As Decimal = {50, 5000} 'In cents!
Dim Variance As Decimal = 10 'In percent
Dim MultiSupplierChance = 0.66
Dim rnd = New Random(Seed)
For i = 1 To SupplierCount
Dim sup = New Supplier With {.ID = i,
.Name = String.Format("Supplier{0:D3}", i),
.Delivery = IIf(rnd.NextDouble <= DeliveryChance,
rnd.Next(Delivery(0) / 10, Delivery(1) / 10) * 10,
0),
.Discount = 0}
Dim r = rnd.NextDouble
For k = DiscChance.GetLowerBound(1) To DiscChance.GetUpperBound(1)
If r <= DiscChance(0, k) Then
sup.Discount = DiscChance(1, k)
Exit For
End If
Next
context.Suppliers.AddOrUpdate(sup)
Next
Dim j As Integer = 1
For i = 1 To ItemCount
Dim itm = New Item With {.ID = i,
.Number = String.Format("Item{0:D4}", i),
.SupplierItems = New List(Of SupplierItem)}
Debug.Print("{0}: {1}", itm.ID, itm.Number)
context.Items.AddOrUpdate(itm)
Dim FirstSup = New SupplierItem With {.ID = j,
.Supplier = context.Suppliers.Find(rnd.Next(1, SupplierCount)),
.Price = rnd.Next(PriceRange(0), PriceRange(1)) * 100}
j += 1
itm.SupplierItems.Add(FirstSup)
While rnd.NextDouble <= MultiSupplierChance And itm.SupplierItems.Count < SupplierCount
Dim NextSup = New SupplierItem With {.ID = j,
.Supplier = context.Suppliers.Find(rnd.Next(1, SupplierCount)),
.Price = FirstSup.Price + rnd.Next(-Variance, Variance) * 100}
If itm.SupplierItems.First(Function(s) s.Supplier.ID = NextSup.Supplier.ID) Is Nothing Then
j += 1
itm.SupplierItems.Add(NextSup)
End If
End While
Next
For i = 1 To LocationsCount
Dim loc = New Location With {.ID = i,
.Name = String.Format("Location{0:D2}", i)}
context.Locations.AddOrUpdate(loc)
Next
For i = 1 To PartsRequestCount
Dim pr = New PartsRequest With {.ID = i,
.Item = context.Items.Find(rnd.Next(1, ItemCount)),
.Location = context.Locations.Find(rnd.Next(1, LocationsCount)),
.Quantity = rnd.Next(1, MaxQuantity),
.RequestTime = Now().AddMinutes(-rnd.Next(0, 10080))}
context.PartsRequests.AddOrUpdate(pr)
Next
MyBase.Seed(context)
End Sub
End Class
End Namespace