Pergunta

I realise many similar questions have been asked but after attempting tens of examples I still cannot get this to work. The problem I am having involves the updating of foreign key values in the Users table.

I am creating a website using ASP WebForms, .net 4.5, Entity Framework 5, SQL server 2012.

I created the EF using database first, here you can see a sample of the model: my model

I am using a 3 tier architecture - my data access layer queries the database using LINQ and returns a User object (as defined by T4).

This means the object is disconnected from the context when it is modified. (right?)

I modify the object in the page's code behind, updating the UserRole by doing this:

(in page load)

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

(on button click)

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

At this point the mUser object holds the correct (updated) UserRole object. I then pass the mUser object back into my data layer to update the database. The simnplest examples I have seen do this:

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

I have also tried using:

  • _context.users.attach
  • getting the original from the context using _context.users.find(id) and updating the original from the updated User object
  • getting the dbentityentry object from _context.entry(updatedUser) and setting the property("UserRole").isModified property to true

Using any of these methods I expect the foreign key value for UserRole in the Users table to update to be the ID of a different role in the UserRole table, reflecting the changes in the mUser object, but this does not happen and the value does not change.

What am I doing wrong? Why will the ID not update in the Users table?

Any help would be greatly appreciated

Foi útil?

Solução

I finally worked out what I was doing wrong, I did not check the box for "include foreign key relationships" when setting up the model, meaning the relationships were not properly defined (I assume).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top