2017-08-02 1 views
0

S'il vous plaît, je suis nouveau dans le framework C# et Entity, je travaille sur des projets utilisant l'API Web. J'utilise aussi posman pour tester mes données et les valider avant de les insérer dans la base de données. Mon contrôleur Create acceptera un json montré ci-dessous. L'objet JSON est mappé à mon modèle de personne, l'élément Assets de json est une collection du modèle d'actif. ce que je veux faire est de récupérer tout le nom de l'actif dans le json et de vérifier s'ils existent dans la table des actifs. S'ils existent, récupérez les ID de l'actif et enregistrez-les tous dans la table "PersonAsset". NOTE que « PersonAsset » contient « PersonID » & « assetId »Enregistrement de données dans une relation plusieurs à plusieurs en utilisant Entity Framework

J'ai passé plus de 24 heures à essayer de résoudre ce problème, je besoin d'aide s'il vous plaît

{ 
    "Id": 0, 
    "FirstName": "stringFine", 
    "MiddleName": "test-Sesan", 
    "LastName": "stringOkay", 
    "Gender": "Male", 
    "DateOfBirth": "10-10-2017", 
    "BirthCertificate": 0, 
    "Asset": 0, 
    "WorkTypeId": 2, 
    "DwellingId": 2, 
    "HouseholdRoleId": 2, 
    "HealthFacility": 1, 
    "Relationship": "string", 
    "Education": 0, 
    "MaritalStatusId": 2, 
    "MobileNumber": "080099813501", 
    "SettlementTypeId": 2, 
    "CommunityId": 3, 
    "SocialGroup": 0, 
    "Address": "string", 
    "IsInSchool": 0, 
    "ReferenceNumber": "100/NSIO/NSR/345660", 
    "DateInterviewed": "10-10-2017", 
    "IsActive": true, 
    "Assets": [ 
    { 
     "Name": "Testing" 
    } 
    ], 
    "SocialGroups": [ 
    { 
     "Name": "string" 
    } 
    ] 
} 

    [ResponseType(typeof(PersonModel))] 
    [ModelValidator] 
    [HttpPost] 
    public IHttpActionResult Create(PersonModel model) 
    { 

    try 
     { 
var person = Factory.Persons.Create(model); 
Service.Persons.Insert(person); 
person = Service.Persons.Get(person.Id); 
    var dto = Factory.Persons.Create(person); 
    return CreatedAtRoute("DefaultApi", new { id = dto.Id },dto); 
} 
catch(dbexception){} 

Comment puis-je accepter les valeurs ci-dessous JSON et l'utiliser dans mon point de terminaison de contrôleur

"Assets": [ 
    { 
     "Name": "Testing" 
    } 
], 

Répondre

0

À quoi ressemble votre PersonModel? Voir si le code ci-dessous aide.

Créer un modèle d'actifs

public class Asset 
{ 
    public string Name { get; set; } 
} 

puis dans PersonModel

public class PersonModel 
{ 

    public List<Asset> Assets { get; set; } 

} 
+0

Ci-dessous mon code PersonModel. Notez que j'ai supprimé certaines propriétés parce que la classe est trop long espace de noms nsr.Domain.Model { public class PersonModel { public int Id {get; ensemble; } public string Prénom {get; ensemble; } public string MiddleName {get; ensemble; public int MaritalStatusId {get; ensemble; } public bool IsActive {get; ensemble; } public virtual ICollection Actifs {get; ensemble; } public virtual ICollection SocialGroups {get; ensemble; } } – codeDev

+0

@codeDev L'exemple ci-dessus a-t-il fonctionné pour vous? –