0

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
4

1 に答える 1

0

私は問題を理解しました。変更されたコンテキストを保存するのを忘れていました。

于 2013-02-04T04:57:07.003 に答える