2010-05-18 8 views
1

Il s'agit d'un projet C#/asp.net. Le message d'erreur complet que j'obtiens est: Erreur 0194: tous les artefacts chargés dans la collection d'éléments doivent avoir la même version. Plusieurs versions ont été rencontrées.Exception dans Entity Framework: Erreur 0194: tous les artefacts chargés

Ce projet a été démarré en tant que 3.5 et mis à niveau vers 4.0. Lorsque j'essaie de tester l'une des méthodes, j'obtiens l'erreur que j'ai postée dans la ligne d'objet. Je vais inclure les lignes réelles sur lesquelles il lance l'exception. S'il y a quelque chose que les gens ont besoin de voir pour essayer de m'aider, faites-le moi savoir et je le posterai aussi. Toute aide sera appréciée, je n'ai pas de chance avec ça.

/// <summary> 
/// Initializes a new SFBExternalPaymentsEntities object using the connection string found in the 'SFBExternalPaymentsEntities' section of the application configuration file. 
/// </summary>  
public SFBExternalPaymentsEntities() : base("name=SFBExternalPaymentsEntities", "SFBExternalPaymentsEntities")  
{ 
    this.ContextOptions.LazyLoadingEnabled = false;  
    OnContextCreated();  
} 

/// <summary>  
/// Initialize a new SFBExternalPaymentsEntities object. 
/// </summary> 
public SFBExternalPaymentsEntities(string connectionString) : base(connectionString, "SFBExternalPaymentsEntities")  
{ 
    this.ContextOptions.LazyLoadingEnabled = false;  
    OnContextCreated();  
} 

/// <summary> 
/// Initialize a new SFBExternalPaymentsEntities object. 
/// </summary> 
public SFBExternalPaymentsEntities(EntityConnection connection) : base(connection, "SFBExternalPaymentsEntities")  
{ 
    this.ContextOptions.LazyLoadingEnabled = false;  
    OnContextCreated();  
} 
#endregion 

Ajout d'une méthode appelant le constructeur.

public static CreditCardResponse AuthCapture(CreditCard newCC) 
{ 
    ACHResponse validateResponse = CreditCard.Validate(newCC); 
    if (validateResponse.Status == "Accepted") 
    { 
     Profile currentProfile = new Profile(); 
     currentProfile = ProfilesGateWay.GetByID(newCC.ProfileID); 
     CreditCardTransaction newCCTransaction = CreateCreditCardTransaction(newCC, currentProfile); 
     ServiceClient client = new ServiceClient(); 
     CreditCardTransactionResponse cctResponse = client.CreditCardAuthorizeAndCapture(newCCTransaction); 
     client.Close(); 
     CreditCardResponse ccResponse = CreateCCResponse(cctResponse); 

     if (ccResponse.ResponseCode == 1) 
     { 
      int authAVS = ConvertAVStoInt(ccResponse.AVSResponse); 
      int appAVS = ConvertAVStoInt(newCC.AVLevel); 
      bool isAVSPass = CompareAVS(authAVS, appAVS); 

      if (isAVSPass == false) 
      { 
       ccResponse.ResponseCode = 0; 
       ccResponse.ResponseReasonCode = 99; 
       ccResponse.ResponseText = "Did not meet your AVS requirements"; 
       return ccResponse; 
      } 
       else 
       { 

       int newCCID = CreateCreditCardRecord(newCC, currentProfile, cctResponse, "Captured", "Auth_Capture"); 
       CreditCardRecord updateCC = CreditCardRecordsGateWay.GetByID(newCCID); 
       updateCC.CaptureOn = DateTime.Now; 
       CreditCardRecordsGateWay.Update(updateCC); 
       return ccResponse; 
       } 
      } 
     else 
     { 
      return ccResponse; 
     } 

    } 
    CreditCardResponse newCCResponse = new CreditCardResponse(); 
    newCCResponse.ResponseCode = 0; 
    newCCResponse.AchResponse = validateResponse; 
    return newCCResponse; 
} 
public static CreditCardResponse PriorAuthCapture(CreditCard newCC) 
{ 
    CreditCardRecord ccRecord = CreditCardRecordsGateWay.GetByCCGateWayID(newCC.CreditCardTransactionID); 
    ServiceClient client = new ServiceClient(); 
    CreditCardTransaction ccTransaction = client.CreditCardGetTransactionById(ccRecord.CCGatewayID); 
    CreditCardTransactionResponse cctResponse = client.CreditCardPriorAuthorizationCapture(ccTransaction); 
    if (cctResponse.ResponseCode == 1) 
    { 
     ccRecord.Status = "Captured"; 
     ccRecord.CaptureOn = DateTime.Now; 
    } 

    CreditCardResponse ccResponse = CreateCCResponse(cctResponse); 
    return ccResponse; 
} 
protected static int CreateCreditCardRecord(CreditCard newCC, Profile currentProfile, CreditCardTransactionResponse cctResponse, string status, string transactionType) 
{ 
    CreditCardRecord newCCRecord = new CreditCardRecord(); 
    newCCRecord.Address = newCC.Address; 
    newCCRecord.AddressVerificationLevel = newCC.AVLevel; 
    newCCRecord.Amount = newCC.Amount; 
    newCCRecord.CardCode = newCC.CardCode; 
    newCCRecord.CardNumber = newCC.CardNumber; 
    newCCRecord.CCGatewayID = cctResponse.CreditCardTransactionID; 
    newCCRecord.City = newCC.City; 
    newCCRecord.CompanyName = newCC.CompanyName; 
    newCCRecord.CreateBy = currentProfile.ACHCompanyName; 
    newCCRecord.CreateOn = DateTime.Now; 
    newCCRecord.Description = newCC.Description; 
    newCCRecord.Expiration = newCC.Expiration; 
    newCCRecord.FirstName = newCC.FirstName; 
    newCCRecord.LastName = newCC.LastName; 
    newCCRecord.Profile.ProfileID = currentProfile.ProfileID; 
    newCCRecord.State = newCC.State; 
    newCCRecord.Status = status; 
    newCCRecord.TransactionType = transactionType; 
    newCCRecord.Zip = newCC.Zip; 
    return CreditCardRecordsGateWay.Insert(newCCRecord); 
} 

Répondre

0

Vous venez affiché les constructeurs à votre classe SFBExternalPaymentsEntities, mais vous semblez dire que vous obtenez une exception lorsque vous appelez une méthode qui retourne une collection d'entités, qui fait envoyer le message d'exception que vous obtenez . Les chances sont que le problème réside dans la méthode que vous appelez, ou dans le code l'appelant plutôt que dans le code du constructeur que vous avez posté. Pouvez-vous poster un code plus pertinent ou expliquer comment le code que vous avez posté se rapporte à l'exception.

+0

Ben, Merci pour la réponse. J'ai essayé plusieurs méthodes et elles donnent toutes la même erreur mais je posterai l'une des méthodes au cas où je serais sur la mauvaise voie. J'ajoute du code au prochain commentaire. Il est trop long à inclure ici. – Steve

+0

> public statique CreditCardResponse AuthCapture (CreditCard newCC) \t \t { ACHResponse validateResponse = CreditCard.Validate (nouveauCC); if (validateResponse.Status == "Accepté") { Profil currentProfile = nouveau Profil(); currentProfile = ProfilesGateWay.GetByID (newCC.ProfileID); CreditCardTransaction newCCTransaction = Créer une transactionCreditCard (newCC, currentProfile); La toute dernière ligne est l'endroit où il frappe le constructeur et meurt. – Steve

+0

Ben, Je viens d'ajouter la méthode à la publication originale. Désolé, la première fois posté ici, pas familier avec l'interface. Merci d'avoir regardé. – Steve

0

J'ai rencontré le même problème lorsque j'ai mis à jour un de mes projets de .net 4.0 à 4.5, probablement parce qu'il y avait un autre fichier .edmx dans un autre projet référencé dans le projet cible. Solution à publier: Mise à jour de l'autre projet référencé et contenant le fichier .edmx vers .net 4.5, puis, avec le bouton droit de la souris sur tous les fichiers .edmx dans ces deux projets, puis sur 'Exécuter outil personnalisé' Cela a fonctionné pour moi espérons que cela fonctionne pour tout le monde en lisant cet article