0

C#, Linq2Sql, .NET 2.0, SQL 2005 Express

When I run the following code I get a InvalidCastException unable to cast of type System.Byte[] to System.String

This does not occur on all rows in the table i.e. this code runs fine soemtimes.

I checked there are no columns in the table that linq declares as SYstem.Byte[]

The stack trace says the exception occurs on the linq statement and when I F11 into the code the GetProject is never called the exception occurs before this method is called.

So I think it is Linq framework bug.

This has got me stumped? any ideas?

[code]

    public Project GetProject(int id)
    {
        var project = (from row in _dbctx.Projects
                       where row.ProjectID == id
                       select row).SingleOrDefault();

        Project proj = GetProject(project);

        return proj;
    }

    private Project GetProject(TBRServices.Domain.TBR.DataContext.Project sqlproject)
    {
        Project project = new Project();

        project.ProjectID = sqlproject.ProjectID;
        project.ProjectName = sqlproject.ProjectName;
        project.ProjectDescription = sqlproject.ProjectDescription;
        project.ClientID = sqlproject.ClientID;
        project.PurchaseOrderNumber = sqlproject.PurchaseOrderNumber;
        project.ProjectTotalBillingEstimate = sqlproject.ProjectTotalBillingEstimate;
        project.EmployeeID = sqlproject.EmployeeID;
        project.ProjectBeginDate = sqlproject.ProjectBeginDate.ToString();
        project.ProjectEndDate = sqlproject.ProjectEndDate.ToString();
        project.Active = sqlproject.Active;
        project.InclGST = sqlproject.InclGST;
        project.ContractRate = sqlproject.ContractRate;
        project.MarginRate = sqlproject.MarginRate;
        project.Notes = sqlproject.Notes;
        project.PayrollTax = sqlproject.PayrollTax;
        project.EmployeeReference = sqlproject.EmployeeReference;
        project.PayReference = sqlproject.PayReference;
        project.ProjectLocation = sqlproject.ProjectLocation;
        project.ContractTypeID = sqlproject.ContractTypeID;
        project.DoNotCalcMarginOrGST = sqlproject.DoNotCalcMarginOrGST;
        project.ConvertToInvoice = sqlproject.ConvertToInvoice;
        project.AuthFirstname = sqlproject.AuthFirstname;
        project.AuthLastname = sqlproject.AuthLastname;
        project.AuthEmail = sqlproject.AuthEmail;
        project.CapturedDocumentType = sqlproject.CapturedDocumentType;
        project.TimesheetProcessingType = sqlproject.TimesheetProcessingType;
        project.TimesheetFrequency = sqlproject.TimesheetFrequency;
        project.AggregateTimesheet = sqlproject.AggregateTimesheet;
        project.AggregateAutomatically = sqlproject.AggregateAutomatically;
        project.BusProcEmpCut = sqlproject.BusProcEmpCut;
        project.BusProcAgencyCut = sqlproject.BusProcAgencyCut;
        project.SendCopyTimesheet = sqlproject.SendCopyTimesheet;
        project.TimesheetRecipient1 = sqlproject.TimesheetRecipient1;
        project.TimesheetRecipient2 = sqlproject.TimesheetRecipient2;
        project.SendCopyInvoice = sqlproject.SendCopyInvoice;
        project.PublishedOn = sqlproject.PublishedOn.ToString();
        project.SendAggTimesheetsWhenReceived = sqlproject.SendAggTimesheetsWhenReceived;
        project.AuthoriseInvoice = sqlproject.AuthoriseInvoice;
        project.HourlyDailyMthly = sqlproject.HourlyDailyMthly;
        project.EmployeeCategory = sqlproject.EmployeeCategory;
        project.AgencyRate = sqlproject.AgencyRate;
        project.ConsultantID = sqlproject.ConsultantID;
        project.SendCopyInvoiceEmployee = sqlproject.SendCopyInvoiceEmployee;
        project.UseClientDetailsForTimesheet = sqlproject.UseClientDetailsForTimesheet;
        project.FaxedTimesheet = sqlproject.FaxedTimesheet;
        project.TimesheetEditable = sqlproject.TimesheetEditable;
        project.IncludeInReport = sqlproject.IncludeInReport;
        project.SendLogonEmail = sqlproject.SendLogonEmail;
        project.NoticePeriodID = sqlproject.NoticePeriodID;
        project.ManagerCanViewPaidUnpaid = sqlproject.ManagerCanViewPaidUnpaid;
        project.LesterSalesStaff = sqlproject.LesterSalesStaff;
        project.IncludeSalesReport = sqlproject.IncludeSalesReport;
        project.CurrencyAccount = sqlproject.CurrencyAccount;
        project.LeaveMustBeAuthorisedTimesheet = sqlproject.LeaveMustBeAuthorisedTimesheet;
        project.LeaveMustBeAuthorisedLeaveForm = sqlproject.LeaveMustBeAuthorisedLeaveForm;
        project.DefaultHoursWorkedWeek = sqlproject.DefaultHoursWorkedWeek;
        project.DefaultHoursWorkedDay = sqlproject.DefaultHoursWorkedDay;
        project.AccruedLeaveStartDate = sqlproject.AccruedLeaveStartDate.ToString();
        project.AllowLeaveMoreThanAccrued = sqlproject.AllowLeaveMoreThanAccrued;
        project.IsPaidASalary = sqlproject.IsPaidASalary;
        project.AgencyID = sqlproject.AgencyID;
        project.SendEmailToManagerToOKLeave = sqlproject.SendEmailToManagerToOKLeave;
        project.SpecialPayrollNotes = sqlproject.SpecialPayrollNotes;
        project.SpecialInvoicingNotes = sqlproject.SpecialInvoicingNotes;
        project.InvoiceTermsMessage = sqlproject.InvoiceTermsMessage;
        project.AuthManagerPhone = sqlproject.AuthManagerPhone;
        project.LMF = sqlproject.LMF;
        project.LMFPercent = sqlproject.LMFPercent;
        project.LMFInclInPayRate = sqlproject.LMFInclInPayRate;
        project.LMFOnTop = sqlproject.LMFOnTop;
        project.AgencyComm = sqlproject.AgencyComm;
        project.AgencyCommPercent = sqlproject.AgencyCommPercent;
        project.AgencyCommInclInPayRate = sqlproject.AgencyCommInclInPayRate;
        project.AgencyCommOnTop = sqlproject.AgencyCommOnTop;
        project.PayRateInclMargin = sqlproject.PayRateInclMargin;
        project.MarginRatePercent = sqlproject.MarginRatePercent;
        project.MarginRateGST = sqlproject.MarginRateGST;
        project.MarginRateInclInPayRate = sqlproject.MarginRateInclInPayRate;
        project.MarginRateOnTop = sqlproject.MarginRateOnTop;
        project.PayRateInclSuper = sqlproject.PayRateInclSuper;
        project.PayrollTaxAmount = sqlproject.PayrollTaxAmount;
        project.PayrollTaxPercent = sqlproject.PayrollTaxPercent;
        project.PayrollTaxInclInPayRate = sqlproject.PayrollTaxInclInPayRate;
        project.PayrollTaxOnTop = sqlproject.PayrollTaxOnTop;
        project.TypeOfArrangement = sqlproject.TypeOfArrangement;
        project.ParameterRequired = sqlproject.ParameterRequired;
        project.SpecialPayrollEnabled = sqlproject.SpecialPayrollEnabled;
        project.ClientContactUsedReceiptOfInvoiceID = sqlproject.ClientContactUsedReceiptOfInvoiceID;
        project.ExcludeEmpNameOnInvoice = sqlproject.ExcludeEmpNameOnInvoice;
        project.BPForReporting = sqlproject.BPForReporting;
        project.UseGemteqInvoiceFormat = sqlproject.UseGemteqInvoiceFormat;
        project.TreatPayrollDetailsSameAsBP = sqlproject.TreatPayrollDetailsSameAsBP;


        return project;
    }

[/code]

1
  • hey man instead of this boilerplate code for mapping two objects use AutoMapper Commented Dec 17, 2010 at 11:40

2 Answers 2

0

Check the answer to a similar SO question. It will not be the exact answer but may help you find the problem in your query -

Problem with Linq to SQL

Sign up to request clarification or add additional context in comments.

Comments

0

unable to cast of type System.Byte[] to System.String

Indicates that a property in sqlproject is stored as byte[] while the corresponding property in project is a string

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.