1

我有一张logEvent桌子和一张名为logEventContact.

我的logEventContact样子是这样的:

LogEventID ContactID
1           2     
1           3     
12          2    

在我的 edmx 文件中,我的logEvent表具有Contacts导航属性。EF 不创建实体表logEventContact

我的editLogEvent()功能如下所示:

public bool EditLogEvent(LogEvent logEvent)
{
    var oldLogEvent = db.LogEvents
        .Include(o => o.Contacts)
        .Include(o => o.LogEventAttachments)
        .Single(o => o.LogEventID == logEvent.LogEventID);
    db.ApplyCurrentValues("LogEvents", logEvent);
    db.SaveChanges();

    var editedLogEvent = db.LogEvents
        .Include(o => o.Contacts)
        .Include(o => o.LogEventAttachments)
        .Single(o => o.LogEventID == logEvent.LogEventID);

    ...
}

我的保存不适用于我的logEvents.Contacts. 我editedLogEvent.Contacts的还是和旧的一样。

4

1 回答 1

1

最后我让它工作。EF管理的many-many表真的很糟糕......

public bool EditLogEvent(LogEvent logEvent, out LogEvent editedLogEvent,...){
    ...
    using (var db = new DistributorEntities()){
        var oldLogEvent = db.LogEvents
            .Include(o => o.Contacts)
            .Include(o => o.LogEventAttachments)
            .Single(o => o.LogEventID == logEvent.LogEventID);

        oldLogEvent.Contacts.Clear();

        foreach (var cont in logEvent.Contacts)
        {
            var contact = db.Contacts.SingleOrDefault(c => c.ContactID == cont.ContactID);
            oldLogEvent.Contacts.Add(contact);
        }
        db.LogEvents.ApplyCurrentValues(logEvent);
        db.SaveChanges();
        var editedLogEvent = db.LogEvents
            .Include(o => o.Contacts)
            .Include(o => o.LogEventAttachments)
            .Single(o => o.LogEventID == logEvent.LogEventID);
            ...
    }
}
于 2013-09-18T20:44:05.747 回答