テキストステータスと外部キーステータスIDを更新しようとしています。外部キーC#1つではなく多くの設定エンティティフレームワーク
public class Model : DbModelBuilder
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int id { get; set; }
[Required]
public string Status { get; set; } //relationship mappings
public virtual Statuses StatusId { get; set; }
}
public class Statuses
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int id { get; set; }
[Required] public string StatusName { get; set; }
}
public void updateStatus(String status, int statusId = 0)
{
using (Context ctx = new Context())
{
if (statusId != 0)
{
if (ctx.Statuses.Any(ts => ts.id == statusId))
{
model.StatusId = ctx.Statuses.Find(statusId);
}
}
model.Status = status;
ctx.Entry(model).State = EntityState.Modified;
ctx.SaveChanges();
}
}
テキストステータスは正しく設定されていますが、外部キーのステータスは更新されません。
モデル全体を更新するときに、別のクラスでも同様の機能があり、問題なく動作します。
私はモデルが情報を記録することによって更新されているのを見ることができます。しかし、ctx.savechanges()の後にctx.model.statusIdを記録すると、statusIdは更新されません。
モデル変数はどこで宣言されていますか? 'model.StatusId = ctx.Statuses.Find(statusId);' - FindはIDではなくエンティティを返すので、エラーが発生します。 –
私はその割り当てによって混乱しています 'model.StatusId = ctx.Statuses.Find(statusId);' ...あなたは本当に 'StatusId' *というメンバと' Status'というメンバを持っていますか?私は間違ってタイプしたと仮定し、 'model.Status'に代入する必要があります。その場合、後で同じメンバに代入することで上書きされますか? –
外部キー付きステータスは、アプリケーションがモデルを処理する際にテキストステータスを使用してユーザーにステップバイステップの情報を提供するアプリケーションを通じてモデルを追跡するために使用されます。 –