В вашем коде нужно сделать несколько вещей.Во-первых, чтобы иметь возможность просматривать список записей инвентаризации продуктов, вам необходимо выбрать их как часть вашей операции домена GetProducts:
Public Function GetProducts() As IQueryable(Of ProductPM)
Return From p As Product In Me.ObjectContext.Products.Include("ProductInventories") Select New ProductPM With
{.ListPrice = p.ListPrice,
.ModifiedDate = p.ModifiedDate,
.Name = p.Name,
.ProductID = p.ProductID,
.ProductNumber = p.ProductNumber,
.ProductInventory = From i In p.ProductInventories Select New ProductInventoryPM With
{
.Quantity = i.Quantity,
.ProductID = p.ProductID
}
}
End Function
, которая отобразит их во второй сетке данных.
Вам также необходимо добавить конструктор к вашему классу ProductPM, который инициализирует класс ProductInventory:
Public Sub New()
ProductInventory = New List(Of ProductInventoryPM)
End Sub
Последняя проблема заключается в том, что операции домена вставки вызываются в неправильном порядке.Насколько я могу судить, лучший способ справиться с этим заключается в следующем:
Создание пустой операции вставки домена для объекта ProductInventoryPM.В нем не требуется никакой логики, но метод необходим для того, чтобы объект ProductInventoryPM можно было добавить в коллекцию инвентаризации ProductPM.
Public Sub InsertProductInventory(ByVal ProductInventoryPM As ProductInventoryPM)
End Sub
ПРИМЕЧАНИЕ. Если вы хотите иметь возможность добавлять новыезаписи инвентаризации после того, как вы создали продукт + начальная запись инвентаризации, затем вам нужно будет добавить логику к этой операции домена.,Преимущество этого состоит в том, что нет необходимости вызывать SaveChanges.
Public Sub InsertProduct(ByVal ProductPM As ProductPM)
Dim Product As New Product
Product.Name = ProductPM.Name
Product.ProductNumber = ProductPM.ProductNumber
Product.ListPrice = ProductPM.ListPrice
Product.SellStartDate = DateTime.Now
Product.ModifiedDate = DateTime.Now
Product.SafetyStockLevel = 1000
Product.ReorderPoint = 700
Product.StandardCost = 0
Product.DaysToManufacture = 3
Product.rowguid = Guid.NewGuid()
Me.ObjectContext.Products.AddObject(Product)
Me.ChangeSet.Associate(ProductPM, Product, AddressOf UpdateProductPMKey)
For Each ProductInventoryPM As ProductInventoryPM In ProductPM.ProductInventory
Dim productInventory As New ProductInventory
With productInventory
.Bin = 1
.LocationID = 1
.ModifiedDate = DateTime.Now
.ProductID = ProductInventoryPM.ProductID
.Quantity = ProductInventoryPM.Quantity
.Shelf = "A"
End With
Product.ProductInventories.Add(productInventory)
Me.ChangeSet.Associate(ProductInventoryPM, productInventory, AddressOf UpdateProductInventoryKey)
Next
End Sub
Теперь, если вы запустите его, все должно работать нормально.Дайте мне знать, как это происходит.
Крис