Заполнение данных в Entity FrameworkC#

Место общения программистов C#
Ответить
Anonymous
 Заполнение данных в Entity Framework

Сообщение Anonymous »

Я использую Entity Framework для управления базой данных Postgresql, которая имеет три таблицы: Products, ProductCategories и ProductImages.
Эти три таблицы связаны друг с другом посредством внешних ключей, например, ProductCategoryId таблицы Products является внешним ключом для таблицы ProductCategories, как и ProductImageId, который внешний ключ к таблице ProductImages.
Вот класс заполнения данных:

Код: Выделить всё

public static class DbInitializer
{
public static void Initialize(ProductContext context)
{
if (context.Products.Any()
&& context.ProductCategories.Any()
&& context.ProductImages.Any())
{
return;   // DB has been seeded
}

var productCategories = new ProductCategory[]
{
new ProductCategory
{
Name = "Tops",
},
new ProductCategory
{
Name = "Hats",
},
new ProductCategory
{
Name = "Shoes",
},
//...
};

// seeding productImages
var productImages = new ProductImage[]
{
new ProductImage
{
// Id = 1,
Name = "cat-photo_0000.jpg",
Description="Wings harness"
},
new ProductImage
{
// Id = 2,
Name = "cat-photo_0001.jpg",
Description="Carry Bag Deluxe"
},
};

// seeding Products
var products = new Product[]
{
new Product
{
Name = "Angel Wings Harness",
Description = "The purrrfect accessory to take your kitty to the next level.",
Price = 10,
},
new Product
{
Name = "Deluxe Carry Bag Orange",
Description = "Backpack-style carry bag with dome.",
Price = 20,
},
};

context.Products.AddRange(products);
context.ProductCategories.AddRange(productCategories);
context.ProductImages.AddRange(productImages);

context.SaveChanges();
}
}
Вот три класса сущностей: Product, ProductCategories и ProductImages:

Код: Выделить всё

public class Product
{
// [Key]
// public int Id { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

[Required]
public string? Name { get; set; }

public string? Description { get; set; }

[Column(TypeName = "money")]
public decimal Price { get; set; }

[ForeignKey("ProductCategory")]
public int? ProductCategoryId { get; set; }
public ProductCategory? ProductCategory { get; set; }

[ForeignKey("ProductImage")]
public int? ProductImageId { get; set; }
public ProductImage? ProductImage { get; set; }
}

public class ProductCategory
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

[Required]
[MaxLength(100)] // Adjust the maximum length as needed
public string Name { get; set; }
}

public class ProductImage
{
// [Key]
// public int Id { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

[Required]
[MaxLength(100)] // Adjust the maximum length as needed
public string? Name { get; set; }

[MaxLength(500)] // Adjust the maximum length for description
public string? Description { get; set;  }
}
Я заполнил некоторые фиктивные данные в трех таблицах, как вы можете видеть, что столбцы ProductCategoryId и ProductImageId не получили значений (ноль) в продуктах
таблица code>.
Изображение

Изображение

Изображение

После этого я могу публиковать новые записи со страницы Swagger, например:
Изображение

Теперь мой вопрос: как я могу заполнить эти значения Id из таблиц ProductCategories и ProductImages и применить их в таблице Products, чтобы заменить эти NULL? Похоже на глупый вопрос, но просто нужна помощь. Спасибо.


Подробнее здесь: https://stackoverflow.com/questions/787 ... -framework
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»