2010-12-17 69 views
0

C#,LINQ2SQL,.NET 2.0,SQL 2005年時快InvalidCastException的運行LINQ 2 SQL語句

當我運行下面的代碼,我收到了 InvalidCastException的無法施放System.Byte []類型來System.String

這不會發生在表中的所有行上,即此代碼運行良好。

我檢查有在LINQ聲明表中沒有列作爲SYstem.Byte []

堆棧跟蹤說,發生在LINQ語句中的例外,當我F11 到代碼的GetProject永遠不會被調用在調用此方法 之前發生異常。

所以我認爲這是Linq框架的bug。

這讓我難住?有任何想法嗎?

[代碼]

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

[/代碼]

+0

你在每一行知道嗎? – 2010-12-17 11:32:52

+0

嘿人,而不是這個樣板代碼映射兩個對象使用AutoMapper – 2010-12-17 11:40:26

回答

0

檢查類似SO問題的答案。這不會是確切的答案,但可以幫助您找到您的查詢的問題 -

Problem with Linq to SQL

0

無法投型的System.Byte []到System.String

表示在sqlproject一個屬性存儲爲byte[],而project的相應屬性爲string