[英]Entity Framework Update Error in ASP.NET Mvc with related entity
我遇到了一个问题,该问题已经搜索并尝试了所有我能找到的解决方案,但无济于事。 我在整个过程中使用相同的存储库和上下文
我有一个预订实体和一个userExtension实体下面是我的图像
然后,我从页面上取回表单集并进行新的预订
public ActionResult Create(FormCollection collection)
{
Booking toBooking = new Booking();
然后我做了一些验证和财产分配,并找到相关的BidInstance toBooking.BidInstance = bid;
我已经检查过,出价不为空。 最终我从当前IPRINCIPAL USER获取用户扩展文件,如下所示
UserExtension loggedInUser = m_BookingRepository.GetBookingCurrentUser(User);
toBooking.UserExtension = loggedInUser;
执行getUserExtension的代码是:
public UserExtension GetBookingCurrentUser(IPrincipal currentUser)
{
var user = (from u in Context.aspnet_Users
.Include("UserExtension")
where u.UserName == currentUser.Identity.Name
select u).FirstOrDefault();
if (user != null)
{
var userextension = (from u in Context.UserExtension.Include("aspnet_Users") where u.aspnet_Users.UserId == user.UserId select u).FirstOrDefault();
return userextension;
}
else{
return null;
}
}
它返回用户扩展名罚款并对其进行分配。 我最初使用aspnet_users,但遇到此问题,因此尝试将其更改为扩展实体。 我一呼叫:
Context.AddToBooking(booking);
Context.SaveChanges();
我收到以下异常,我对如何解决它完全困惑
“ FutureFlyersEntityModel.Booking”中的实体参与“ FK_Booking_UserExtension”关系。 找到0个相关的'UserExtension'。 预期为1个“ UserExtension”。
那么前端出现的最终错误是:
对于关系'FutureFlyersModel.FK_Booking_BidInstance的元数据信息无法检索。 确保该关系的EdmRelationshipAttribute已在程序集中定义。 参数名称:RelationshipName ..
但是两个相关实体都设置在通过
请以这种方式结束即时通讯
在您的.Edmx文件中听起来像是一个问题。 尝试从头开始重新创建edmx文件,看看它是否解决了问题。
我发现了问题。 事实证明,我正在将一个单独的对象链接到用户表,并且由于预订表具有一个父对象,所以它具有一个相关的实体,因此通过尝试添加几个级别的实体存在一个大部分为空白的预订对象。 发生这种情况是因为我没有意识到,如果您将一个实体链接到一个新实体,它将自动将其添加到上下文中,因此该实体丢失了。 谢谢大家的帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.