【发布时间】:2021-11-18 00:47:13
【问题描述】:
我有一个简单的问题。我有 2 种模型、鸡尾酒和配料:
public class Coctails
{
[Required]
public long CoctailsId { get; set; }
public string Name { get; set; }
public string CookingMethod { get; set; }
public double Price { get; set; }
public List<Ingredients> CoctailIngredients { get; set; }
}
public class Ingredients
{
[Required]
public long IngredientsId { get; set; }
public string Name { get; set; }
public double Amount { get; set; }
public double Price { get; set; }
public List<Coctails> CoctailsWithThisIngredient { get; set; }
}
我正在使用邮递员保存 1 种成分,并提出以下要求:
{
"Name":"vodka",
"Amount":1000,
"Price":100}
之后我尝试通过发布请求添加新的鸡尾酒:
{
"Name":"vodka s pivom" ,
"CookingMethod":"rubilovo",
"Price":100,
"coctailIngredients":
[
{
"Name" : "vodka",
"Amount" : 50
}
]}
而且我有无限循环错误(但我需要这 2 个字段 CoctailIngredients 和 CoctailsWithThisIngredient 告诉 ef 这是多对多关系,它正在为我制作第三个连接表)......那么如何避免这种情况?
我的数据库上下文类:
public class DatabaseContext : DbContext
{
public DatabaseContext()
{
}
public DbSet<Coctails> Coctails { get; set; }
public DbSet<Ingredients> Ingredients { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Coctails>()
.HasMany(c => c.CoctailIngredients)
.WithMany(s => s.CoctailsWithThisIngredient)
.UsingEntity(j => j.ToTable("CoctailsWithIngredients"));
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=BarDb.db");
}
}
我的 POST 方法:
[HttpPost]
public async Task<ActionResult<Coctails>> PostCoctails(Coctails coctails)
{
_context.Coctails.Attach(coctails);
await _context.SaveChangesAsync();
return CreatedAtAction("GetCoctails", new { id = coctails.CoctailsId }, coctails);
}
【问题讨论】:
-
你的发帖方式是什么样的?
-
添加到问题中
标签: c# entity-framework .net-core asp.net-web-api entity-framework-core