我的实体:
用户配置: - 这里没什么重要的。
SupportTicket: - UserProfile
SupportTicketMessage: - 用户资料 - SupportTicket
我的问题是每当我尝试插入SupportTicketMessage时,即使我附加了相应的SupportTicket,我也会在数据库中插入一个额外的UserProfile(一个副本)。
这是我的代码(在SupportTicket类中,所以 this 表示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;
}
答案 0 :(得分:1)
我在数据库中插入了一个额外的UserProfile(a 重复)即使我附上了相应的SupportTicket。
是的,您已将相应的SupportTicket
与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();