Добавление ссылки на таблицу поиска в ADO.NET Data Services - PullRequest
1 голос
/ 17 марта 2009

Я пытаюсь использовать ADO.NET Data Services для обновления моей базы данных.

Таблица:

  • Персона (PK PersonId; FK EntityRootId)
  • EntityRoot (PK EntityRootId, FK EntityTypeId)
  • EntityTypes (PK EntityTypeId)

Я пытаюсь создать EntityRoot (неудачное имя, поскольку его можно спутать с Entity Framework Entity. EntityRoot находится в моем домене) и добавить его в базу данных:

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); 

Как добавить ссылку в поле entRoot.EntityTypeId?

Спасибо за понимание.

Ответы [ 2 ]

4 голосов
/ 17 марта 2009

Я думаю, что при этом вы должны использовать SetLink вместо AddLink, потому что свойство, которое вы указываете, имеет значение от Entity до EntityType (у Entity есть один EntityType).

Это в основном то, о чем говорится в сообщении об ошибке (AddLink работает только со свойствами Collection, такими как свойство reverse от типа к объекту или для отношений "многие ко многим").

0 голосов
/ 17 марта 2009

Это просто опечатка в вашем вопросе или

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

В начале вашего вопроса вы пишете "EntityTypes" (с и заканчивая "s").

...