外部キーが "BranchOffice_Id"のテーブルとBranchOfficeという名前のテーブルが、自動インクリメントのプライマリキー "Id"で作成されています。ユーザーテーブルにデータを追加する際にいくつかの問題があります。ここで私のコードは、C#でエンティティフレームワークを使用して書かれています。自動インクリメントされた外部キーを追加したいテーブルに新しい行を追加しました
currentUser = new User()
{
Username = username,
UserType = UserType.User,
Email = email,
Name = name,
BranchOffice = _taskService.GetBranchOfficeById(branchOffice)
};
_db.Users.Add(currentUser);
_db.SaveChanges();
_db.Users.Add(currentUser);
までcurrentUser.BranchOfficeの値はBranchOfficeテーブルの番号#1に対応し、1です。しかし、問題は次のとおりです。_db.SaveChanges();
で、その値は保存されず、代わりにインクリメントされた値(「5」から開始され、BranchOfficeテーブルでは4行しかありません)。最後に、BranchOfficeテーブルに新しい行を追加しました。ここで
は私のモデルです:
public class User : IPrincipal, IIdentity
{
[Key]
public string Username { get; set; }
public UserType UserType { get; set; }
public string Email { get; set; }
public string Name { get; set; }
public virtual BranchOffice BranchOffice { get; set; }
}
public class BranchOffice
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
だけ_db' 'に' currentUser.BranchOffice'を添付し、おそらくあなたのケースで、インスタンスを取得する必要はありません'_taskService'から取得します。 –
BranchOffice = _db.BranchOffices.Find(branchOffice) –
私はそれが同じものだと思った!あなたがた両方に感謝します。 –