So, I need to insert a new SubItem in a Items database. I mean, i have the following model classes:
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; }
}
When I insert a new user, its Ok. No errors. The problem is when the user is already in database, but the Event is new and is not at the database, so i need to insert it. I get a error when try to Add. The code:
[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();
}
The error is at the line:
faceUser.FaceEvents.FaceEventDatas.Add(faceEventsData);
I am missing something and i am new with ENtity. I appreciate a help.
UPDATE:
Error
Object reference not set to an instance of an object
HOw the users here, gave me a light, i discovered that "FaceEventsDatas" was null. So i putted the code:
var FaceEventDatas = db.FacebookDataUsers.SelectMany(x => x.FaceEvents.FaceEventDatas).ToList();
after listevents. And changed to Attach instead of context Add, because is a insert a row that belongs to another class.
db.FacebookDataUsers.Attach(faceUser);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.