我使用LINQ to SQL來保存中有許多子實體的實體,而只是想知道如果沒有人得到這個錯誤:The identifier cannot be an empty string
標識符不能爲空字符串
我只是想知道如果任何人已經遇到它,你做了什麼來解決這個問題?也許我會很幸運,你的解決方案之一將工作。
其中代碼失敗
public void SaveJob(object sender, CancelEventArgs e)
{
Job = JobEditorUtilities.CreateNewJob(jobid, SettingsManager.OpsMgrSettings.Region.Trim(), _db);
try
{
var canSaveJob = CanSaveJob();
if (canSaveJob)
{
JobEditorUtilities.PrepareJobForSaving(Job);
if (newjob)
_db.JobNumbers.InsertOnSubmit(Job);
var a = _db.GetChangeSet();
_db.SubmitChanges(); // fails here
RenameJobNumberIfNecessary();
}
else
{
e.Cancel = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public static JobNumber CreateNewJob(int jobid, string region, DataAccessDataContext dc)
{
var job = new JobNumber();
job.JobID = jobid;
InitializeSubContractor(dc, job);
job.GWDRunSummaryDatas = new GWDRunSummaryData();
job.CorrectionsApplieds = new CorrectionsApplied();
job.MonitorInfos = new MonitorInfo();
InitializeGWDHeader(dc, job);
job.Rpt_Details = new Rpt_Detail();
job.RunningModes = new RunningMode();
job.SafetyIssuesTotals = new SafetyIssuesTotals();
job.SafetyIssueTotals = new SafetyIssueTotals();
switch (region)
{
case "NA":
InitializeNA_Header(dc, job);
job.NA_WRdetails = new NA_WRdetail();
InitializeNA_BillingCompany(dc, job);
job.NA_RigDetails = new NA_RigDetail();
job.NA_Holedetails = new NA_Holedetail();
job.NA_Salesmans = new NA_Salesman();
InitializeNA_WL_Company(dc, job);
break;
case "EU":
InitializeEAC_Header(dc, job);
break;
}
return job;
}
private static void InitializeNA_WL_Company(DataAccessDataContext dc, JobNumber job)
{
job.NA_WL_Companies = new NA_WL_Company();
job.NA_WL_Companies.Resource =
dc.Resources.FirstOrDefault(r => r.Refno == job.NA_WL_Companies.WL_companyid);
}
private static void InitializeGWDHeader(DataAccessDataContext dc, JobNumber job)
{
job.GWD_Header2s = new GWD_Header2();
job.GWD_Header2s.GWDDirComp2 =
dc.GWDDirComp2s.FirstOrDefault(g => g.ID == job.GWD_Header2s.MWD_Company);
}
private static void InitializeNA_BillingCompany(DataAccessDataContext dc, JobNumber job)
{
job.NA_BillingCompanies = new NA_BillingCompany();
job.NA_BillingCompanies.Resource =
dc.Resources.FirstOrDefault(r => r.Refno == job.NA_BillingCompanies.Billingcompanyid);
}
private static void InitializeSubContractor(DataAccessDataContext dc, JobNumber job)
{
job.Subcontractors = new Subcontractor();
job.Subcontractors.Resource =
dc.Resources.FirstOrDefault(r => r.Refno == job.Subcontractors.SubcontractorID);
}
private static void InitializeNA_Header(DataAccessDataContext dc, JobNumber job)
{
job.NA_Headers = new NA_Header();
job.NA_Headers.RigType1 = dc.RigTypes.FirstOrDefault(r => r.ID == job.NA_Headers.RigType);
job.NA_Headers.Well_Locn1 = dc.Well_Locns.FirstOrDefault(w => w.ID == job.NA_Headers.Well_Locn);
}
private static void InitializeEAC_Header(DataAccessDataContext dc, JobNumber job)
{
job.EAC_Headers = new EAC_Header();
}
你的代碼是什麼? –
這是一個查詢處理錯誤。嘗試並在你的Linq quer(y)(ies)之前放置一個斷點,以找出哪一個給你帶來麻煩。然後發佈那部分代碼,如果你願意(在編輯你的問題時)。 –
您始終可以使用SQL Server Profiler確定由LinqToSQL生成哪個SQL語句,然後在SQL Management Studio中對其進行跟蹤。顯然,一些錯誤的值被傳遞給SQL查詢,但我懷疑沒有代碼就可以回答錯誤。 – platon