【问题标题】:EF programmatically insert many to manyEF以编程方式插入多对多
【发布时间】:2010-05-02 20:28:51
【问题描述】:

我有具有此结构 ID PK 的表和具有 FK 的两列,例如 ActivityID 和 ContactID。 我尝试以编程方式在这两个 FK 列中插入一些值。 我该怎么做,任何帮助都是appriciated.Tnx

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

    如果您想使用您的结构 - 您必须获取 Activity 和 Contact 的实例,并在新实体上设置相应的属性。

    var newActivityContact = new ActivityContact();// m_Entities.CreateActivityContact(0);
    newActivityContact.Activity = activityRepository.GetById(activityId);
    newActivityContact.Contact = contactRepository.GetById(contactId);
    m_Entities.AddToActivityContact(newActivityContact);
    m_Entities.SaveChanges();
    

    【讨论】:

    • activityRepository.GetById(activityId) 这个查询是不是获取这个activity。
    • 是 - 从您的 m_Entities 实例中检索它,例如 m_Entities.Contact.FirstOrDefault(c=>c.Contact_Id == contactId);
    【解决方案2】:

    我认为最好的解决方案是摆脱主键,将 ActivityID 和 ContactID 的组合设置为 PK,然后在视觉设计器中重新创建整个模型。每个Activity 对象都将具有Contacts 导航属性,每个Contact 将具有Activities。您可以通过以下方式将联系人添加到活动中:

    activity.Contacts.Add(contact);
    

    如果你真的需要额外的ID,那就更复杂了。

    【讨论】:

    • 我在数据表中有这两个 FK,我尝试在 sql 上的这个 rel.table 中插入这个。
    猜你喜欢
    • 2014-03-16
    • 2019-08-24
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多