我有一個CMS系統,用戶可以在其中創建一個Category
對象,然後用戶可以單擊創建的類別並將Product
對象添加到該對象。當用戶瀏覽產品時,他們可以點擊一個Category,它將帶有Post請求的CategoryId發送到產品索引頁面。產品索引頁面然後獲取與傳遞的類別ID匹配的類別對象,選擇屬於該類別的產品列表屬性並顯示產品。 Category class
有產品的List<Product>
的財產。將產品分配給產品對象中帶有CategoryName的CategoryName
我現在有一個CSV data import form
它允許用戶做同樣的事情,但只有一個CSV文件上傳。
CSV文件數據(灰色陰影)是產品清單。注 - 爲每個產品類別名稱列(5陰影列,即 「家」, 「健康&美」):
這是產品和類別的類:
public class Product
{
public int Id { get; set; }
public string Barcode { get; set; }
[Required]
public string Name { get; set; }
public string Description { get; set; }
[Required]
public Byte[] Image { get; set; }
[Required]
public Decimal Price { get; set; }
[Required]
public bool ShowOnIndex { get; set; }
}
public class Category
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public Byte[] Image { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
SQL Server中我與類別之間的關係是One-to-Many
;一個類別有很多產品,一個產品只有一個類別。
在下面的代碼中,我試圖通過CategoryId將產品列表保存到正確的類別中。但是,我沒有CSV數據中每個產品的CategoryIds,因此我手動收集了循環中類別的所有ID。
public static async Task SaveProducts()
{
var CategoryIds = new List<int>();
foreach (var item in CategoriesList)
{
db.Categories.Add(item);
var id = db.Categories.Where(c => c.Name == item.Name).Select(x => x.Id).ToString();
CategoryIds.Add(int.Parse(id));
}
foreach (var item in ProductsList)
{
foreach (var id in CategoryIds)
{
var category = await db.Categories.FindAsync(id);
category.Products.Add(item);
}
}
await db.SaveChangesAsync();
}
我怎麼莫名其妙在Product
對象CategoryName
值匹配正確的Category Id
。