EF 4.1: ошибка после обновления при отображении одного объекта в несколько таблиц - PullRequest
1 голос
/ 21 июля 2011

После обновления рабочего проекта с EF 4.0 до 4.1 теперь я получаю следующую ошибку во время выполнения:

Карта была вызвана несколько раз для типа «Все», и по крайней мере один из вызовов не указал имя целевой таблицы.

Код:

public EverybodyConfiguration()
{
  Map(e => e.Properties(p => new
  {
    p.EverybodyId,
    p.FirstName,
    p.LastName,
    p.Initials,
    p.CapsId,
    p.DateModified
  })).ToTable("Everybody");

  Map(e => e.Properties(p => new
  {
    p.EverybodyId,
    p.Status
  })).ToTable("EverybodyStatus");

  Map(e => e.Properties(p => new
  {
    p.EverybodyId,
    p.Email,
    p.BouncedFlag,
    p.DoNotContactFlag
  })).ToTable("EverybodyEmail");
}

Сообщение об ошибке сбивает с толку, поскольку оно указывает на то, что имя таблицы где-то не было указано, но вы можете видеть в коде, который она имеет.

Все таблицы имеют одинаковое имя столбца первичного ключа.

Есть предложения?

1 Ответ

1 голос
/ 21 июля 2011

ToTable, который вы вызываете, является отображением для всей сущности (прикованный Map, метод EntityTypeConfiguration).Вы должны использовать ToTable метод EntityMappingConfiguration, который является параметром Action, переданным в Map:

public EverybodyConfiguration()
{
    Map(c =>
    {
        c.Properties(p => new
        {
            p.EverybodyId,
            p.FirstName,
            p.LastName,
            p.Initials,
            p.CapsId,
            p.DateModified
        });
        c.ToTable("Everybody");
    });

    Map(c =>
    {
        c.Properties(p => new
        {
            p.EverybodyId,
            p.Status
        });
        c.ToTable("EverybodyStatus");
    });

    Map(c =>
    {
        c.Properties(p => new
        {
            p.EverybodyId,
            p.Email,
            p.BouncedFlag,
            p.DoNotContactFlag
        });
        c.ToTable("EverybodyEmail");
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...