2

Я пытаюсь создать отношение «один ко многим», используя сущность framework для преобразования объекта json с использованием возврата Web.API.структура сущности Код Первые отношения «один-ко-многим» в Web.API

Я создаю сценарий, в котором у пользователя есть много функций электронной почты.

Однако json-файл в сущности User, который содержит, содержит список сообщений, которые всегда пусты.

Entity Пользователь

[DataContract] 
public class UsuarioEntity : BaseEntity 
{ 
    [DataMember] 
    public string UserName { get; set; } 

    [DataMember] 
    public string Password { get; set; } 

    [DataMember] 
    public bool Ativado { get; set; } 

    [DataMember] 
    public ICollection<EmailEntity> Emails { get; private set; } 
} 

Email Entity

[DataContract] 
public class EmailEntity : BaseEntity 
{ 

    [DataMember] 
    public string Email { get; set; } 

    [DataMember] 
    public bool Ativo { get; set; } 

    [DataMember] 
    public bool Principal { get; set; } 

    [DataMember] 
    public DateTime DataCadastro { get; set; } 

    [DataMember] 
    public UsuarioEntity Usuario { get; set; } 

} 

Fluent API

UsuarioConfiguration

  ToTable("tbl_usuarios"); 

     HasKey(a => new {a.Id, a.UserName}); 

     Property(a => a.Id) 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) 
      .HasColumnName("cd_id_usuario"); 

     Property(a => a.UserName) 
      .HasMaxLength(32) 
      .HasColumnName("nm_usuario"); 

     Property(a => a.Password) 
      .IsRequired() 
      .HasMaxLength(32) 
      .HasColumnName("tx_senha"); 

     Property(a => a.DataCadastro) 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed) 
      .HasColumnType("datetime") 
      .IsRequired() 
      .HasColumnName("dt_cadastro"); 

     HasMany(o => o.Emails) 
      .WithRequired(); 

EmailConfiguration

  ToTable("tbl_email_usuario"); 

     HasKey(a => new { a.Id, a.Email }); 

     Property(a => a.Id) 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) 
      .HasColumnName("cd_id_email"); 

     Property(a => a.Email) 
      .HasMaxLength(150) 
      .HasColumnName("nm_email"); 

     Property(a => a.DataCadastro) 
      .HasColumnType("datetime") 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed) 
      .IsRequired() 
      .HasColumnName("dt_cadastro") 

Я пытался использовать EF с Web API таким образом:

public IQueryable<UsuarioEntity> Get() 
{ 
    PlainContext context = new PlainContext(); 
    return context.Usuarios; 
} 

За исключением, что возвращение не ожидается

[{"Id":1,"Ativado":true,"DataCadastro":"\/Date(1357307720730-0200)\/","Emails":[],"Password":"senha456","UserName":"recapix"}] 

I своя и зарегистрированные электронные письма только они не появляются на Json.

+0

они получают извлекаются из базы данных и не появляются в ответ XML/JSON или не получая выборку из базы данных вообще – frictionlesspulley

+0

Я пытаюсь получить базу данных и сериализовать в json-файл, поставить список адресов электронной почты всегда пустым, я поместил элементы в базу данных. –

+0

вы поместили их напрямую или через ef ? –

ответ

1

Ваших лица не поддерживают отложенную загрузку, поэтому вы должны явно определить, что вы хотите загрузить связанные электронные письма, а также:

return context.Usarios.Include(u => u.Emails); 
+0

Работал, но я использовал строковое имя столбца в Include ... Lambda не работает ... Спасибо, человек .. –

+3

Вы можете использовать lambdas, если вы включили System.Data.Entity в ваших объявлениях пространства имен –

+0

Когда я использую include, я получаю сообщение об ошибке «Bad gateway» при вызове api, можете ли вы подумать о чем-то, что может вызвать эту проблему? –

Смежные вопросы