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 :

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();
}
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 ?

Ma méthode de repository "AddOrUpdate":

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);
}
Ma méthode de controller "AddOrUpdateAsync":

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);
}
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 ?

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.