ASP.NET MVCフレームワークを使用したモバイルアプリケーションのバックエンドを構築しています。 は、私は2つのオブジェクトがあります。エンティティフレームワークに外部キーを持つエンティティを挿入できません
public class CarLogItem : EntityData
{
public CarLogItem(): base()
{
Time = DateTime.Now;
}
public DateTime Time { get; set; }
public int RPM { get; set; }
public int Speed { get; set; }
public int RunTime { get; set; }
public int Distance { get; set; }
public int Throttle { get; set; }
[ForeignKey("Trip")]
public String Trip_id { get; set; }
// Navigation property
public TripItem Trip { get; set; }
}
と
public class TripItem : EntityData
{
public TripItem() : base()
{
UserId = User.GetUserSid();
StartTime = DateTime.Now;
logItems = new List<CarLogItem>();
}
public string UserId { get; set; }
public List<CarLogItem> logItems {get;set;}
public DateTime StartTime { get; set; }
}
を、私は、データベースに新しいCarLogItemを追加するコントローラを持っています。
public class CarLogItemController : TableController<CarLogItem>
{
// POST tables/CarLogItem
public async Task<IHttpActionResult> PostCarLogItem(CarLogItem item)
{
var lastItem = db.CarLogItems.OrderByDescending(x => x.Time).FirstOrDefault();
//lastItem = (Query().Where(logitem => true).OrderBy(logitem => logitem.Time)).Last();
//checking if lastItem.Trip isn't null because
// I have entities with Trip field is null, but all of them should have it.
if (lastItem != null && lastItem.Trip != null && item.RunTime > lastItem.RunTime)
{
item.Trip = lastItem.Trip;
}
//In order to test adding of new TripItem entity to database
// I compare item.RunTime with 120, so it always true
else if (lastItem == null || item.RunTime < 120) // < lastItem.RunTime)
{
var newTrip = new TripItem();
item.Trip = newTrip;
}
else
{
throw new ArgumentException();
}
CarLogItem current = await InsertAsync(item);
return CreatedAtRoute("Tables", new { id = current.Id }, current);
}
}
私は旅で新しいCarLogItemを追加しようとしている= nullを、それは大丈夫だが、旅は、特定のオブジェクトがあるときには、次の例外で失敗します。提出されたエンティティが無効だった
:検証エラーにプロパティ 'Id':Idフィールドが必要です
入れ子になったTripItemで新しいCarLogItemを正しく追加する方法はありますか?
'Id'プロパティを設定する必要があることは明らかですが、何かが' Id'プロパティを持っていることを示すコードはありません。 –
「TripItem」主キーとは何ですか?私はあなたのモデルでそれを見ることができません。 – Balde
どちらのエンティティもEntityDataのIdプロパティを継承します –