だから私はこのように2つのモデルをセットアップしています:
class Job { ... List<Restriction> userRestrictions {set; get; ... }
2番目のモデル:
Restriction { public int Id { get; set; } ... public int JobID { get; set; } }
ここで、ジョブを編集するときに、次の方法で制限を取得します。
job = db.Jobs.Where(i => i.Id == id).Include(r => r.UserRestrictions).First();
したがって、UserRestrictions を反復処理して手動で作成します。
@for (ind = 0; ind < Model.UserRestrictions.Count; ind++)
{
JaASv1.Models.Restriction p = Model.UserRestrictions[ind];
<tr>
<td>
<input type="hidden" name="UserRestrictions[@(Counter + ind)].Id" value="@p.Id" />
<input type="hidden" name="UserRestrictions[@(Counter + ind)].JobId" value="@Model.Id" />
</td>
私の投稿方法:
public ActionResult Edit(Job job, string ProjTypeOther, string VenderOther, string FoldingOther, string BindingOther)
...
db.Entry(job).State = EntityState.Modified;
...
for (int iter = iterStart; iter >= 0; iter--)
{
Restriction r = job.UserRestrictions[iter];
db.Entry(r).State = EntityState.Modified;
if (r.Permissions == 0)
{
DelPermission(sPath, r.AdName); // Folder Permission things
job.UserRestrictions.Remove(r);
continue;
}
else if (r.Permissions == 1 )
{
AddPermission(sPath, r.AdName, readRights); // Folder Permission things
}
else if (r.Permissions == 2)
{
AddPermission(sPath, r.AdName, writeRights); // Folder Permission things
}
}
db.SaveChanges();
db.SaveChanges() で次のエラーが発生します。
1 つ以上の外部キー プロパティが null 非許容であるため、リレーションシップを変更できませんでした。
すべての job.UserRestrictions を調べて、すべてに JobID が投稿されていることを確認します。データベース コンテキストを調べたところ、NULL を含む外部キーがないことがわかったので、このエラーが何を話しているのかわかりません。約。
私は何か間違ったことをしているのだろうか?
各制限状態を Modified に設定してみました。それはうまくいかなかったようです。
私はどんな提案にもオープンです。
ありがとう!