Добавление ссылки на таблицу подстановки в ADO.NET Службы данных

StackOverflow https://stackoverflow.com/questions/654597

  •  19-08-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать ADO.NET Службы передачи данных для обновления моей базы данных.

Таблицы:

  • Персона (PK PersonID;FK Корень сущности)
  • EntityRoot( PK EntityRootId, FK EntityTypeId)
  • Типы объектов (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?

Спасибо за любое понимание этого.

Это было полезно?

Решение

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

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

Другие советы

Это просто опечатка в вашем вопросе или так и должно быть

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

В начале вашего вопроса вы пишете "EntityTypes" (с буквой "s" и оканчивающимся на нее).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top