Question

I’m attempting to use ADO.NET Data Services to update my database.

Tables:

  • Person( PK PersonId; FK EntityRootId)
  • EntityRoot( PK EntityRootId, FK EntityTypeId)
  • EntityTypes( PK EntityTypeId)

I’m trying to create an EntityRoot (unfortunate name since it may be confused with Entity Framework’s Entity. EntityRoot is in my domain) and add it to the database:

var entRoot = EntityRoot.CreateEntityRoot(
    0, "Lou", DateTime.Now, "Lou", DateTime.Now);
var entityType = 
   (from type in myContext.EntityTypeSet
    where (type.Description == "Person")
    select type).FirstOrDefault(); // this works fine and returns the entityType I’m looking for

entRoot.EntityType = entityType;
myContext.AddToEntityRootSet(entRoot); 

// with the line below I get a runtime error:
//  “AddLink and DeleteLink methods only work when the sourceProperty is a collection.”
//myContext.AddLink(entRoot, "EntityType", entityType); 

// without the line above I get an error from the save:
//  “Entities in 'MyEntities.EntityRootSet' participate in the 'FK_EntityRoots_EntityTypeId_Lookup_EntityTypes' 
//    relationship. 0 related 'EntityTypes' were found. 1 'EntityTypes' is expected.”
myContext.BeginSaveChanges(SaveChangesOptions.Batch,
                      new AsyncCallback(OnSaveAllComplete),
                      null); 

How can I add a reference to the entRoot.EntityTypeId field?

Thanks for any insight into this.

Was it helpful?

Solution

I think when doing this you should use SetLink instead of AddLink, because the property you are indicating is from Entity to EntityType (an Entity has one EntityType).

This is basically what the error message is telling you (AddLink works only on Collection properties, like the reverse property from type to entity, or for many to many relationships).

OTHER TIPS

Is it just a typo in your question or should it be

myContext.AddLink(entRoot, "EntityTypes", entityType); 

At the start of your question you write "EntityTypes" (with and ending "s").

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top