私はEF4コードファーストでMVC3を使用しています。私はspecificEventId = 2
とspecificEvent = X
、新しいSpecificEvent
オブジェクトは、DB内に作成されてOrderオブジェクトを保存しようとすると、既にDBにおけるID 2を持つ特定のイベントXがありますにもかかわらず、MVC3 EF4は保存時に外部キーオブジェクトを複製します
public class Order {
public int ID { get; set; }
[Required]
public float Price { get; set; }
[Required]
public int PayMethodId { get; set; }
public PayMethod PayMethod { get; set; }
public int? SpecificEventId { get; set; }
public SpecificEvent SpecificEvent { get; set; }
public int? SeasonalTicketId { get; set; }
public SeasonalTicket SeasonalTicket { get; set; }
}
:私は、次のモデルを持っています。 specificEventId = 2
とspecificEvent = null
を試してみると、データ検証エラーが発生します。
私は間違っていますか?私はSpecificEvent
とSeasonalTicket
をnullにしたいと思っています。そして、私は 'Order'を保存するたびにEF4がDBにこれらのオブジェクトの新しいインスタンスを作成しないようにしたいと思います。
更新
これは、DBにOrder
を保存するための私のコードです:
public void SaveOrder(Order order)
{
Order fromDb = null;
// If editing an existing object.
if ((fromDb = GetOrder(order.ID)) != null)
{
db = new TicketsDbContext();
db.Entry(order).State = System.Data.EntityState.Modified;
db.SaveChanges();
}
// If adding a new object.
else
{
db.orders.Add(order);
db.SaveChanges();
}
}
私は保存すると、私はelse
句に到達行います。
これはEFに関する最も一般的な質問ですので、質問をする前に何を探しましたか? –
@ラディスラフ:私は "ef \ mvcオプションの外部キー"、 "ef \ mvcオブジェクトの重複保存"などを検索しました。私のケースに近いいくつかの例が見つかりましたが、それでも私のためには機能しませんでした。たぶん私は何かを忘れてしまった(私は小切手を出して自分自身を再確認した)か、あるいは間違ったことを探したかもしれない。私はこのバグを数時間デバッグしようとしました(私はEF noobのようなものです:)。あなたが何かを明らかにしていないと思ったり、私が探すことができる他のものについて何か提案があれば、私は聞いて嬉しいです。 – Ofirov
あなたの質問にエンティティを保存するコードを追加する必要があります。 –