3

我的实体:

UserProfile: - 这里没什么重要的。

SupportTicket: - 用户配置文件

SupportTicketMessage: - 用户配置文件 - SupportTicket

我的问题是,每当我尝试插入 SupportTicketMessage 时,我都会在数据库中插入一个额外的 UserProfile(重复),即使我已经附加了相应的 SupportTicket。

这是我的代码(在 SupportTicket 类中,所以意味着 SupportTicket):

public void AddReply(UserProfile user)
{
    SupportTicketMessage msg = new SupportTicketMessage(user, this);
    using (DBContext db = new DBContext())
    {
        db.SupportTickets.Attach(msg.Ticket);
        db.SupportTicketMessages.Add(msg);
        db.SaveChanges();
     }
}

每当我运行它时,SupportTicketMessage 都会被很好地插入,但它会插入一个重复的 UserProfile,即使已经有一个匹配的。

这里有什么问题?

顺便说一句,这是 supportticketmessage 构造函数:

   public SupportTicketMessage(UserProfile author, SupportTicket ticket)
    {
        Author = author;
        Ticket = ticket;
        Date = DateTime.Now;
    }
4

1 回答 1

1

即使我附加了相应的 SupportTicket,我也会将一个额外的 UserProfile 插入到数据库中(重复)。

是的,您附加了对应SupportTicket的 with Attach(msg.Ticket),但是您在哪里附加了UserProfile实际上是重复的实体?如果msg.Ticket.UserProfile已设置为您传入的配置文件,AddReply则重复是意外的。但它在您设置的代码片段中不可见msg.Ticket.UserProfile。如果未设置,您还需要附加msg.UserProfile

db.UserProfiles.Attach(msg.Author);
db.SupportTickets.Attach(msg.Ticket);
db.SupportTicketMessages.Add(msg);
db.SaveChanges();
于 2013-08-01T22:48:15.947 回答