Lors de la création d'un utilisateur, des entrées sont requises dans plusieurs tables. J'essaye de créer une transaction qui crée une nouvelle entrée dans une table et puis passe le nouvel entityid dans la table parent et ainsi de suite. L'erreur que j'obtiens estTransaction WCF avec plusieurs insertions
Le gestionnaire de transactions a désactivé sa prise en charge pour les transactions à distance/réseau. (Exception de HRESULT: 0x8004D024)
Je crois que cela est dû à la création de plusieurs connexions dans un seul TransactionScope, mais je ne suis pas sûr de ce que le meilleur/moyen le plus efficace de le faire est.
[OperationBehavior(TransactionScopeRequired = true)]
public int CreateUser(CreateUserData createData)
{
// Create a new family group and get the ID
var familyGroupId = createData.FamilyGroupId ?? CreateFamilyGroup();
// Create the APUser and get the Id
var apUserId = CreateAPUser(createData.UserId, familyGroupId);
// Create the institution user and get the Id
var institutionUserId = CreateInsUser(apUserId, createData.AlternateId, createData.InstitutionId);
// Create the investigator group user and return the Id
return AddUserToGroup(createData.InvestigatorGroupId, institutionUserId);
}
Voici un exemple de l'un des appels de fonction, tous les autres suivent le même format
public int CreateFamilyGroup(string familyGroupName)
{
var familyRepo = _FamilyRepo ?? new FamilyGroupRepository();
var familyGroup = new FamilyGroup() {CreationDate = DateTime.Now};
return familyRepo.AddFamilyGroup(familyGroup);
}
Et l'appel du référentiel pour cela est la suivante
public int AddFamilyGroup(FamilyGroup familyGroup)
{
using (var context = new GameDbContext())
{
var newGroup = context.FamilyGroups.Add(familyGroup);
context.SaveChanges();
return newGroup.FamilyGroupId;
}
}
Merci. J'ai été capable de tout faire dans un contexte et tout fonctionne maintenant. –