Структура сущности:Присвоить объект собственности другого объекта

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

Вопрос

У меня есть эти сущности (это всего лишь абстракция, которую я создал для этого поста):

  • Язык
  • Район
  • Описание

Это ссылки между ними:

  • Район * - 1 Язык
  • Описание * - 1 Язык
  • Район 1 - 1 Описание

Если я принесу вот так:

var myFetch = from c in context.Districts
              where c.Id = 10
              select new { DistrictId = c.Id, Lang = c.Language };

и после этого я пытаюсь присвоить его Описание вот так:

Description desc = Description.CreateDescription(0, "My description");
desc.DistrictReference.EntityKey = new EntityKey("MyEntities.Descriptions", "DistrictId", myFetch.DistrictId);
desc.Language = myFetch.Lang; //throws error

Выданная ошибка является:

Система.Исключение InvalidOperationException: Связь не может быть определена, потому что имя набора объектов 'MyEntities.Описания' недопустимо для роли 'District' в имени набора ассоциаций 'MyEntities.Район_описание'.

Что я делаю не так?

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

Решение

если myFetch должны были быть экземпляром класса District вы могли бы сделать это программно:

desc.DistrictReference.EntityKey = new EntityKey(  
  String.Format(  
    "{0}.{1}",   
    myFetch.EntityKey.EntityContainerName,   
    myFetch.EntityKey.EntitySetName),   
  "DistrictId", 
  myFetch.DistrictId);  

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

Только то, что говорится в сообщении:Вы указали неправильное имя набора объектов.

  1. Откройте свой EDMX.
  2. Откройте окно браузера модели.
  3. Найдите объект District в браузере модели
  4. Щелкните по нему правой кнопкой мыши, выберите "Свойства".
  5. Обратите внимание на правильное имя набора объектов
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top