2

我想創建一個使用實體框架來使用Web.API返回轉換json對象的一對多關係。實體框架在Web.API中的代碼優先一對多關係

我正在創建一個用戶有很多功能電子郵件的場景。

但是,用戶實體中的json文件包含電子郵件列表,該電子郵件列表始終爲空。

用戶實體

[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; } 
} 

電子郵件實體

[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; } 

} 

流利的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"}] 

我擁有 和註冊電子郵件只有他們不會出現在JSON。

+0

他們是從數據庫中獲取取出並在響應XML/JSON沒有出庭或在所有 – frictionlesspulley

+0

我試圖讓數據庫和序列化JSON文件沒有得到拾取的表格數據庫,把電子郵件列表始終是未來空的,我把項目數據庫.. –

+0

你直接或通過EF把他們? –

回答

1

你的實體並不支持延遲加載,所以你必須定義明確表示要加載相關的電子郵件,以及:

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

工作,但我在包含字符串名稱列... Lambda不工作...謝謝人.. –

+3

如果您包括System.Data.Entity在您的命名空間聲明 –

+0

當我使用包括我打電話API時得到錯誤網關的響應,你能想到的東西,可能會導致這個問題好嗎? –

相關問題