我正在使用实体框架来处理我正在处理的webapp。网络应用程序跟踪场地。每个场地都可举办多种活动。我有一个包含所有不同类型的事件类型(EventTypes)的表和另一个跟踪每个场所可以拥有的事件的表(VenueEventTypes),当我添加新场地时,我创建了一个包含EventType Propery的新VenueEventTypes集合然后转到数据库并找到事件类型并将其添加到每个VenueEventTypes。问题是当我保存场地时它创建了一切正常但它在数据库中为EventTypes添加了一个空记录,但是VenueEventType外键指向有效事件类型而不是新创建的空键。这是一些代码:
public void addVenue(VEN_Venues venue)
{
using (var db = new VenueEntities())
{
var parish = from dbParish in db.VEN_Parishes
where dbParish.ParishID == venue.ParishID
select dbParish;
venue.VEN_Parishes = parish.First();
venue = this.processEventTypes(venue, db);
db.VEN_Venues.AddObject(venue);
db.SaveChanges();
}
}
private VEN_Venues processEventTypes(VEN_Venues venue, VenueEntities db)
{
foreach (VEN_VenueEventTypes eventType in venue.VEN_VenueEventTypes)
{
eventType.VEN_EventTypes = new EventTypeFacade().findEventTypes(eventType.VEN_EventTypes, db);
}
return venue;
}
有人能指出我的错误吗?
谢谢!
答案 0 :(得分:1)
您似乎并未将VEN_EventType
添加到venue.VEN_VenueEventTypes
。
你必须按照这些方针做点什么:
venue.VEN_VenueEventTypes.Add(eventType);
如果您不想要任何重复项,则必须使用attach:
venue.VEN_VenueEventTypes.Attach(eventType);