Исключение в Entity Framework: Ошибка 0194: все загруженные артефакты - PullRequest
1 голос
/ 18 мая 2010

Это проект c # / asp.net. Я получаю полное сообщение об ошибке: Ошибка 0194: Все артефакты, загруженные в коллекцию элементов, должны иметь одинаковую версию. Обнаружено несколько версий.

Этот проект был начат как 3.5 и обновлен до 4.0. Когда я пытаюсь протестировать любой из методов, я получаю сообщение об ошибке, которое я разместил в строке темы. Я собираюсь включить фактические строки, на которые оно выдает исключение. Если в людях есть что-то, нужно попытаться помочь, дайте мне знать, и я тоже опубликую это. Буду признателен за любую помощь, мне не повезло с этим.

/// <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

Добавлен метод, вызывающий конструктор.

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

Ответы [ 2 ]

0 голосов
/ 05 марта 2017

Я столкнулся с той же проблемой, когда обновил один из своих проектов с .net 4.0 до 4.5, возможно, причина в том, что в другом проекте был другой файл .edmx, на который ссылался целевой проект. Решение проблемы: обновил другой проект, на который ссылались и который содержал файл .edmx, до .net 4.5, а затем щелкнул правой кнопкой мыши по каждому файлу .edmx в этих 2 проектах и ​​затем выбрал «Запустить пользовательский инструмент». Это сработало для меня, надеюсь, что это работает для всех, кто читает эту статью

0 голосов
/ 18 мая 2010

Вы только что разместили конструкторы в своем классе SFBExternalPaymentsEntities, но, похоже, вы говорите, что получаете исключение, когда вызываете метод, который возвращает коллекцию сущностей, что делает send с полученным сообщением об исключении. Скорее всего, проблема заключается в методе, который вы вызываете, или в вызывающем его коде, а не в коде конструктора, который вы опубликовали. Можете ли вы опубликовать еще один подходящий код или объяснить, как код, который вы опубликовали, относится к исключению.

...