Utilisation d'Entity Framework Core directement et/ou dans une API RESTful
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:
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:
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:
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.