gpt4 book ai didi

c# - EF即使附加了父级也插入重复行

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:09 25 4
gpt4 key购买 nike

我的实体:

用户资料:- 这里没有什么重要的。

支持票: - 用户资料

SupportTicketMessage: - 用户资料 - 支持票

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

这是我的代码(在 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,即使已经有一个匹配的 UserProfile。

这里有什么问题?

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

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

最佳答案

I get an additional UserProfile inserted into the database (a duplicate) even though I've attached the corresponding SupportTicket.

是的,您使用 Attach(msg.Ticket) 附加了相应的 SupportTicket,但是您在哪里附加了实际上是重复的 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();

关于c# - EF即使附加了父级也插入重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17995939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com