实体框架插入空记录

时间:2013-04-15 16:42:38

标签: c# asp.net entity-framework

我正在使用实体框架来处理我正在处理的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;
    }

有人能指出我的错误吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您似乎并未将VEN_EventType添加到venue.VEN_VenueEventTypes

你必须按照这些方针做点什么:

venue.VEN_VenueEventTypes.Add(eventType);

如果您不想要任何重复项,则必须使用attach:

venue.VEN_VenueEventTypes.Attach(eventType);