[英]Insert a new SubItem on Entity Framework
所以,我需要在 Items 數據庫中插入一個新的 SubItem。 我的意思是,我有以下模型類:
public class FacebookDataUser
{
[Key,JsonProperty("id")]
public string FacebookDataUserId { get; set; }
public string name { get; set; }
public string birthday { get; set; }
public string email { get; set; }
[JsonProperty("Events")]
public virtual FaceEvents FaceEvents { get; set; }
[Column(TypeName = "datetime2")]
public DateTime DateOfInsert { get; set; }
}
public class FaceEvents
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int FaceEventsId { get; set; }
[JsonProperty("data")]
public ICollection<FaceEventData> FaceEventDatas { get; set; }
}
public class FaceEventData
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int FaceEventDataId { get; set; }
public string description { get; set; }
public string name { get; set; }
[Column(TypeName = "datetime2")]
public DateTime start_time { get; set; }
[JsonProperty("Place")]
public virtual FacePlace FacePlace { get; set; }
public int attending_count { get; set; }
public string type { get; set; }
public string rsvp_status { get; set; }
[Column(TypeName = "datetime2")]
public DateTime end_time { get; set; }
}
當我插入一個新用戶時,它確定。 沒有錯誤。 問題是當用戶已經在數據庫中時,但事件是新的並且不在數據庫中,所以我需要插入它。 嘗試添加時出現錯誤。 編碼:
[ResponseType(typeof(FacebookDataUser))]
public async Task<IHttpActionResult> PostFacebookDataUser(FacebookDataUser facebookDataUser)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
FacebookDataUser faceUser = await db.FacebookDataUsers.FindAsync(facebookDataUser.FacebookDataUserId);
if (faceUser == null)
{
facebookDataUser.DateOfInsert = DateTime.Now;
db.FacebookDataUsers.Add(facebookDataUser);
}
else
{
var listEvents = facebookDataUser.FaceEvents.FaceEventDatas.ToList();
for (var i=0; i<= facebookDataUser.FaceEvents.FaceEventDatas.Count; i++)
{
var eventName = listEvents[i].name;
var events = db.FacebookDataUsers.Where(b => b.FaceEvents.FaceEventDatas.Select(x => x.name).ToList().Contains(eventName)).FirstOrDefault();
if (events == null)
{
FaceEventData faceEventsData = listEvents[i];
try
{
faceUser.FaceEvents.FaceEventDatas.Add(faceEventsData);
}
catch (Exception e)
{
}
}
}
db.FacebookDataUsers.Add(faceUser);
}
await db.SaveChangesAsync();
}
錯誤在這一行:
faceUser.FaceEvents.FaceEventDatas.Add(faceEventsData);
我錯過了一些東西,我是 ENtity 的新手。 我很感激幫助。
更新:
錯誤
你調用的對象是空的
怎么這里的用戶給了我一盞燈,我發現“FaceEventsDatas”為空。 所以我把代碼:
var FaceEventDatas = db.FacebookDataUsers.SelectMany(x => x.FaceEvents.FaceEventDatas).ToList();
在listevents之后。 並更改為附加而不是上下文添加,因為是插入屬於另一個類的行。
db.FacebookDataUsers.Attach(faceUser);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.