0

我意识到许多类似的问题已经被问到,但在尝试了数十个例子之后,我仍然无法得到它的工作。我遇到的问题涉及更新Users表中的外键值。实体框架5外键值不更新(VB.NET)

我使用ASP的WebForms创建一个网站,.NET 4.5,实体框架5 2012年

我使用数据库首先,在这里你可以看到模型的样本产生的EF,SQL服务器: my model

我正在使用3层体系结构 - 我的数据访问层使用LINQ查询数据库并返回一个用户对象(由T4定义)。

这意味着对象在修改时与上下文断开连接。 (?右)

我修改了页面的代码后面的对象,这样做更新的UserRole:

(在页面加载)

Dim _userAcces As UserLayer = UserLayer.getInstance 
mUser = _userAcces.getUserWithCustomerAndRole(_ID) 
Dim _rolesAccess As UserRolesLayer = UserRolesLayer.getInstance 
mRoles = _rolesAccess.listUserRoles 

(上按一下按钮)

mUser.UserRole = mRoles.Item(dropDownRole.SelectedIndex) 

此时,mUser对象拥有正确的(更新的)UserRole对象。然后我将mUser对象传递回我的数据层以更新数据库。我所看到的simnplest例子做到这一点:

Using _context As New SaasPortalContext 
    _context.Entry(updatedUser).State = EntityState.Modified 
    _context.SaveChanges() 
End Using 

我一直在使用也尝试:

  • _context.users.attach
  • 使用_context.users.find正从上下文原(ID ),并且从更新的用户对象
  • 正从_context.entry(updatedUser的dbentityentry对象更新原始)和isModified属性设置的属性(“UserRole的”)。为true

使用这些方法中的任何一种,我期望用户表中的UserRole的外键值更新为UserRole表中不同角色的ID,反映mUser对象中的更改,但这不会发生,并且值不会改变。

我在做什么错?为什么用户表中的ID不会更新?

任何帮助,将不胜感激

+0

N.B.使用当前代码示例(设置要修改的状态)更改非外部属性(如名称)时,会正确更新数据库 –

回答

0

我终于摸索出我在做什么错了,我没有检查框“包括外键关系”建立在模型中,这意味着关系不正确定义(我假设)。