-
-
Notifications
You must be signed in to change notification settings - Fork 403
Description
Describe the bug
When working with Pomelo.EntityFrameworkCore.MySql Version 9 in my Blazor application i tried to work with the objects
[Table("Users")]
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public Guid Guid { get; set; }
[MaxLength(256)]
[Column("firstname", TypeName = "varchar(256)")]
public string Firstname { get; set; } = string.Empty;
[MaxLength(256)]
[Column("lastname", TypeName = "varchar(256)")]
public string Lastname { get; set; } = string.Empty;
}
[Table("Restaurants")]
public class Restaurant
{
public int Id { get; set; }
[Required]
[MaxLength(200)]
public string Name { get; set; } = string.Empty;
[MaxLength(1024)]
public string? GoogleShareLink { get; set; }
public List<Ranking> Rankings { get; set; } = new();
public List<Scoring> Scorings { get; set; } = new();
[Column(TypeName = "date")]
public DateTime? ProposedDate { get; set; }
[Column(TypeName = "date")]
public DateTime? VisitedDate { get; set; }
public int CreatorId { get; set; }
public User Creator { get; set; }
}
[Table("Scorings")]
public class Scoring
{
[Key]
public int Id { get; set; }
public int Score { get; set; }
[ForeignKey(nameof(Creator))]
public int CreatorId { get; set; }
public User Creator { get; set; }
[ForeignKey(nameof(Restaurant))]
public int RestaurantId { get; set; }
public Restaurant Restaurant { get; set; }
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}
[Table("Rankings")]
public class Ranking
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Range(0, 5)]
public double Score { get; set; }
[MaxLength(1024)]
public string ChoosenMeal { get; set; }
[MaxLength(2024)]
public string? Comment { get; set; }
[ForeignKey(nameof(Restaurant))]
public int RestaurantId { get; set; }
[JsonIgnore]
public Restaurant Restaurant { get; set; }
[ForeignKey(nameof(RankingCreator))]
public int RankingCreatorId { get; set; }
[JsonIgnore]
public User RankingCreator { get; set; }
[Column(TypeName = "date")]
public DateTime RankingDate { get; set; }
}
I tried to used my controller like
// POST: api/restaurants
[HttpPost]
public async Task<ActionResult> CreateRestaurant(Restaurant restaurant)
{
_context.Restaurants.Add(restaurant);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetRestaurantById), new { id = restaurant.Id }, restaurant);
}
gets Error "MySqlException: Duplicate entry '1' for key 'PRIMARY'"
Database is a Maria DB Version(10, 6, 22)
Also gets often error "StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.BrowserHttpContent, Headers:
{
Content-Type: application/problem+json; charset=utf-8
}"
To Reproduce
Build a PWA Blazor application and a corresponding .NET API. Design the models and the api controller, call the api
Expected behavior
Should work without error
Technical details (please complete the following information):
- Database server version: Maria DB Version(10, 6, 22)
- Operating system: Windows 11
- Pomelo.EntityFrameworkCore.MySql version: 9.0.0
- Other technical details: ASP.NET Core
Additional context
I tried to find the error in designing the models best as possible but nothing changed the problems. A workaround that works was to pass a restaurant object to the api (for not getting the bad request error) and delete it in the controller (for not getting the Duplicate entry error). But i´m sure that shouldn`t be the way