簡體   English   中英

在實體框架上插入一個新的子項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM