Bonjour à tous,
Dans mon application WPF existante utilisant Entity Framework Core, pour gérer un cas d'enregistrement des entités liées à mon entité "principale" et donc avec le même DbContext, je fais ceci :
Je change d'architecture et je veux utiliser une API RESTful dans ASP.NET Core. J'ai commencé à faire ça, pensez-vous que c'est la bonne approche ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 using (var context = new MyDbContext()) { // Entitée principale var typeObject = context.TypeObjects.Find(1); context.Entry(typeObject).State = EntityState.Unchanged; // Seconde entitée var attribute = new AttributeModel(); attribute.Name = "Name of attribute item"; attribute.Description = "Description of attribute item"; context.Attributes.Attach(attribute); context.Entry(attribute).State = EntityState.Added; // Relation var typeObjectAttribute = new TypeObjectAttributeModel(); typeObjectAttribute.TypeObject = typeObject; typeObjectAttribute.Attribute = attribute; context.TypeObjectAttributes.Attach(typeObjectAttribute); context.Entry(typeObjectAttribute).State = EntityState.Added; await context.SaveChangesAsync(); }
Ma méthode de repository "AddOrUpdate":
Ma méthode de controller "AddOrUpdateAsync":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public override void AddOrUpdate(TypeObjectModel model) { base.AddOrUpdate(model); if (model.TypeObjectAttributes != null) _ = new TypeObjectAttributeRepository(_context).AddOrUpdate(model.TypeObjectAttributes); }
Est-il acceptable dans une API RESTful de modifier les entités liées d'une entité de départ dans la base de données comme je le fais dans mon exemple de code de mon repository ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 [HttpPost] public async Task<ActionResult<TEntity>> AddOrUpdateAsync(TEntity model) { _repository.Add(model); await _repository.SaveAsync(); return CreatedAtAction("Get", new { id = model.Id }, model); }
Sur le Web, je ne trouve que des exemples avec une seule entité, donc je ne sais pas comment procéder pour enregistrer des entités liées... Et dans le cas d'une API RESTful, comment attribuer un EntityState étant donné que nous envoyons un JSON contenant l'entité ?
Merci.
Partager