私のテーブルにはこの関係があります。 Activity, Workstation, Platform, Part
はルックアップテーブルです。MVC4 EF親が挿入されていない場合、子がある場合
Activity
およびWorkstation
テーブルへの(ActivityId、WorkstationId)外部キーを含むActivitWorkstation
があります。
また、PlatformPart
には、(PlatformId、PartId)外部キーがPlatform
とPart
テーブルに含まれています。
ActivityWorkstation
と
PlatformPart
テーブルへの外部キーを持っている
PartStaging
テーブルを持っています。
私のPartStagingコントローラでは、Createメソッドで、ユーザーはアクティビティ、ワークステーション、プラットフォーム、およびパートをドロップダウンから選択します。
私のPartStagingコントローラでは、HttpPost Createメソッドで、ActivityWorkstationレコードとPlatformPartレコードが存在するかどうかをチェックする必要があります。そうでない場合は、挿入して、PartStagingレコードを挿入します。私はこれは親レコード(ActivityWorkstation
および/またはPlatformPart
記録)が存在しないことによって引き起こされ知っ
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 243: }
Line 244:
Line 245: var activityWorkstationId = db.ActivityWorkstations.Where(aw => aw.ActivityId == partstagingvm.ActivityId && aw.WorkstationId == partstagingvm.WorkstationId).FirstOrDefault().Id;
Line 246: var platformPartId = db.PlatformParts.Where(pp => pp.PlatformId == partstagingvm.PlatformId && pp.PartId == partstagingvm.PartId).FirstOrDefault().Id;
Line 247:
:私はこのエラーを取得しています
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(PartStagingVM partstagingvm)
{
if (ModelState.IsValid)
{
PartStaging partstaging = new PartStaging();
if(!db.ActivityWorkstations.Any(aw => aw.ActivityId == partstagingvm.ActivityId && aw.WorkstationId == partstagingvm.WorkstationId))
{
ActivityWorkstation aw = new ActivityWorkstation();
aw.ActivityId = partstagingvm.ActivityId;
aw.WorkstationId = partstagingvm.WorkstationId;
db.ActivityWorkstations.Add(aw);
db.Entry(aw).State = EntityState.Added;
}
if(!db.PlatformParts.Any(pp => pp.PlatformId == partstagingvm.PlatformId && pp.PartId == partstagingvm.PartId))
{
PlatformPart pp = new PlatformPart();
pp.PlatformId = partstagingvm.PlatformId;
pp.PartId = partstagingvm.PartId;
db.PlatformParts.Add(pp);
db.Entry(pp).State = EntityState.Added;
}
var activityWorkstationId = db.ActivityWorkstations.Where(aw => aw.ActivityId == partstagingvm.ActivityId && aw.WorkstationId == partstagingvm.WorkstationId).FirstOrDefault().Id;
var platformPartId = db.PlatformParts.Where(pp => pp.PlatformId == partstagingvm.PlatformId && pp.PartId == partstagingvm.PartId).FirstOrDefault().Id;
partstaging.ActivityWorkstationId = activityWorkstationId;
partstaging.PlatformPartId = platformPartId;
db.PartStagings.Add(partstaging);
db.SaveChanges();
}
return View(partstagingvm);
}
:以下は私のコードです。
PartStaging
に挿入する前に親レコードを挿入する方法を教えてください。
これは機能します。どうもありがとうございます。 – Eric