0
我有兩個表(Testresult & SampleCollection)在數據庫中相互鏈接。我在實體框架中創建了一個Post控制器,它將數據同時保存到兩個表中。但是在將數據保存到兩個表中時應該應用一個特定的條件。我有狀態A,狀態B,條件C及條件d:實體框架發佈方法
條件A是下面的屏幕截圖:
[
{
"TestResult": {
"iOutletStorageId": 50061,
"dLastDeliveryDate": "2016-9-14",
"szMarkingCertificate": "Tank 1: Mark Cert",
"iFirstResultId": "1",
"iSecondResultId": "2",
"szFirstResultRemark": "Tank 1: First Result Remarks",
"szSecondResultRemark": "Tank 1: Second Result Remarks 2",
"szSiteVisitNo": "SVN01",
"dTransdate": "2016-9-20 10:4:10.754",
"iOutletId": 756
},
"MySampleCollections": {
"iPPMSTestResultId": 0,
"szZonalLabelNumber": "Tank 1: Sample Lbl No Zonal",
"szZonalSampleQty": "275",
"szZonalSerialNumber": "Tank 1: Seal No. Zonal",
"szCLabLabelNumber": "Tank 1: Sample Lbl No C-Lab",
"szCLabSampleQty": "275",
"szCLabSerialNumber": "Tank 1: Seal No. C-Lab",
"szGSALabelNumber": "Tank 1: Sample Lbl No GSA",
"szGSASampleQty": "275",
"szGSASerialNumber": "Tank 1: Seal No. GSA",
"szOutletLabelNumber": "Tank 1: Sample Lbl No Outlet",
"szOutletSampleQty": "275",
"szOutletSerialNumber": "Tank 1: Seal No. Outlet",
"szOutletSampleRecievedBy": "Tank 1: Sample Received By Outlet",
"szRetentionLabelNumber": "Tank 1: Sample Lbl No Retention",
"szRetentionSampleQty": "275",
"szRetentionSerialNumber": "Tank 1: Seal No. Retention"
}
}
]
條件B是下面的屏幕截圖:
[
{
"TestResult": {
"iOutletStorageId": 50062,
"dLastDeliveryDate": "2016-9-14",
"szMarkingCertificate": "Tank 2: Cert #",
"iFirstResultId": "1",
"iSecondResultId": "2",
"szFirstResultRemark": "Tank 2: First test Remarks",
"szSecondResultRemark": "Tank 2: Second Test Remarks",
"szSiteVisitNo": "SVN02",
"dTransdate": "2016-9-20 10:4:10.754",
"iOutletId": 756
},
"MySampleCollections": {
"iPPMSTestResultId": 0,
"szZonalLabelNumber": "Tank 1: Sample Lbl No Zonal",
"szZonalSampleQty": "275",
"szZonalSerialNumber": "Tank 1: Seal No. Zonal",
"szCLabLabelNumber": "Tank 1: Sample Lbl No C-Lab",
"szCLabSampleQty": "275",
"szCLabSerialNumber": "Tank 1: Seal No. C-Lab",
"szGSALabelNumber": "Tank 1: Sample Lbl No GSA",
"szGSASampleQty": "275",
"szGSASerialNumber": "Tank 1: Seal No. GSA",
"szOutletLabelNumber": "Tank 1: Sample Lbl No Outlet",
"szOutletSampleQty": "275",
"szOutletSerialNumber": "Tank 1: Seal No. Outlet",
"szOutletSampleRecievedBy": "Tank 1: Sample Received By Outlet",
"szRetentionLabelNumber": "Tank 1: Sample Lbl No Retention",
"szRetentionSampleQty": "275",
"szRetentionSerialNumber": "Tank 1: Seal No. Retention"
}
}
]
條件C是以下截圖:
[
{
"TestResult": {
"iOutletStorageId": 50063,
"dLastDeliveryDate": "2016-9-14",
"szMarkingCertificate": "Tank 2: Cert #",
"iFirstResultId": "1",
"iSecondResultId": "2",
"szFirstResultRemark": "Tank 2: First test Remarks",
"szSecondResultRemark": "Tank 2: Second Test Remarks",
"szSiteVisitNo": "SVN02",
"dTransdate": "2016-9-20 10:4:10.754",
"iOutletId": 756
},
"MySampleCollections": {
"iPPMSTestResultId": 0,
"szZonalLabelNumber": "",
"szZonalSampleQty": "",
"szZonalSerialNumber": "",
"szCLabLabelNumber": "",
"szCLabSampleQty": "",
"szCLabSerialNumber": "",
"szGSALabelNumber": "",
"szGSASampleQty": "",
"szGSASerialNumber": "",
"szOutletLabelNumber": "",
"szOutletSampleQty": "",
"szOutletSerialNumber": "",
"szOutletSampleRecievedBy": "",
"szRetentionLabelNumber": "",
"szRetentionSampleQty": "",
"szRetentionSerialNumber": ""
}
}
]
條件d是以下截圖:
[
{
"TestResult": {
"iOutletStorageId": 50063,
"dLastDeliveryDate": "2016-9-14",
"szMarkingCertificate": "Tank 2: Cert #",
"iFirstResultId": "1",
"iSecondResultId": "2",
"szFirstResultRemark": "Tank 2: First test Remarks",
"szSecondResultRemark": "Tank 2: Second Test Remarks",
"szSiteVisitNo": "SVN02",
"dTransdate": "2016-9-20 10:4:10.754",
"iOutletId": 756
}
}
]
現在我想在時間保存兩行或多行。
當我通過條件A & B,這是正確的保存到數據庫 當我通過條件A & C,它是正確保存到數據庫 當我通過條件A & d,我得到一個錯誤。
這個想法是,第二個表將從第一個表中獲得它的ID。
這裏是我的代碼:
public int PostTestResultObj(List<TestAndSampleResult> testandsampleresult)
{
long testResultId = 0;
if (testandsampleresult != null)
foreach (TestAndSampleResult orderdet in testandsampleresult)
{
mdlTestResult NewTestResult = new mdlTestResult
{
iOutletStorageId = orderdet.TestResult.iOutletStorageId,
dLastDeliveryDate = orderdet.TestResult.dLastDeliveryDate,
szMarkingCertificate = orderdet.TestResult.szMarkingCertificate,
iFirstResultId = orderdet.TestResult.iFirstResultId,
iSecondResultId = orderdet.TestResult.iSecondResultId,
szFirstResultRemark = orderdet.TestResult.szFirstResultRemark,
szSecondResultRemark = orderdet.TestResult.szSecondResultRemark,
szSiteVisitNo = orderdet.TestResult.szSiteVisitNo,
dTransdate = orderdet.TestResult.dTransdate,
iOutletId = orderdet.TestResult.iOutletId
};
SampleCollections newsamplecollectionmodel = new SampleCollections
{
szZonalLabelNumber = orderdet.MySampleCollections.szZonalLabelNumber,
szZonalSampleQty = orderdet.MySampleCollections.szZonalSampleQty,
szZonalSerialNumber = orderdet.MySampleCollections.szZonalSerialNumber,
szCLabLabelNumber = orderdet.MySampleCollections.szCLabLabelNumber,
szCLabSampleQty = orderdet.MySampleCollections.szCLabSampleQty,
szCLabSerialNumber = orderdet.MySampleCollections.szCLabSerialNumber,
szGSALabelNumber = orderdet.MySampleCollections.szGSALabelNumber,
szGSASampleQty = orderdet.MySampleCollections.szGSASampleQty,
szGSASerialNumber = orderdet.MySampleCollections.szGSASerialNumber,
szOutletLabelNumber = orderdet.MySampleCollections.szOutletLabelNumber,
szOutletSampleQty = orderdet.MySampleCollections.szOutletSampleQty,
szOutletSerialNumber = orderdet.MySampleCollections.szOutletSerialNumber,
szOutletSampleRecievedBy = orderdet.MySampleCollections.szOutletSampleRecievedBy,
szRetentionLabelNumber = orderdet.MySampleCollections.szRetentionLabelNumber,
szRetentionSampleQty = orderdet.MySampleCollections.szRetentionSampleQty,
szRetentionSerialNumber = orderdet.MySampleCollections.szRetentionSerialNumber
};
DataTable mydtTransReslt = Uow.tresult.GetTestResultNo(NewTestResult.iOutletStorageId,
NewTestResult.dLastDeliveryDate, NewTestResult.szMarkingCertificate,
NewTestResult.iFirstResultId, NewTestResult.iSecondResultId,
NewTestResult.szFirstResultRemark, NewTestResult.szSecondResultRemark,
NewTestResult.szSiteVisitNo, NewTestResult.dTransdate, NewTestResult.iOutletId);
if (mydtTransReslt.Rows.Count > 0)
{
testResultId = Convert.ToInt32(mydtTransReslt.Rows[0]["NewPPMSTestResult"]);
}
if (testResultId > 0)
{
long samples = Uow.spleCollections.GetSampleCollectionsNo(testResultId,
newsamplecollectionmodel.szZonalLabelNumber,
newsamplecollectionmodel.szZonalSampleQty,
newsamplecollectionmodel.szZonalSerialNumber,
newsamplecollectionmodel.szCLabLabelNumber,
newsamplecollectionmodel.szCLabSampleQty,
newsamplecollectionmodel.szCLabSerialNumber,
newsamplecollectionmodel.szGSALabelNumber,
newsamplecollectionmodel.szGSASampleQty,
newsamplecollectionmodel.szGSASerialNumber,
newsamplecollectionmodel.szOutletLabelNumber,
newsamplecollectionmodel.szOutletSampleQty,
newsamplecollectionmodel.szOutletSerialNumber,
newsamplecollectionmodel.szOutletSampleRecievedBy,
DateTime.UtcNow,
newsamplecollectionmodel.szRetentionLabelNumber,
newsamplecollectionmodel.szRetentionSampleQty,
newsamplecollectionmodel.szRetentionSerialNumber);
}
else
{
mydtTransReslt.Columns.Add("Exception", typeof (string));
mydtTransReslt.Rows.Add("Sorry!!! Transaction Failed");
}
}
return 1;
}
是否有可能對我來說,通過這兩個條件A & d沒有得到任何錯誤。 如果可能,請如何? 謝謝,Somad
網站注:考慮像Automapper這樣的對象映射器,因爲它可以大大地清理你的代碼 – Shoe