.NET Core 2.0を使用しています
私には3つのモデルがあります:
class ModelA {
[Key]
public int ID { get; set; }
public List<ModelB> Emails { get; set; }
}
class ModelB {
[Key]
public int ID { get; set; }
public string Name { get; set; }
public int RequestId { get; set; }
public ModelA Request { get; set; }
public List<ModelC> Tokens { get; set; }
}
class ModelC {
[Key]
public int ID { get; set; }
public string Token { get; set; }
public int Status { get; set; }
public string getStatusName()
{
string[] Statuses = new string[] {
"Created", // 0
"Approved", // 1
"Rejected" // 2
};
return Statuses[Status];
}
}
私はこのように作成されたコンテキストも持っています:
public class RequestorContext : DbContext
{
public DbSet<ModelA> Request { get; set; }
public DbSet<ModelB> Email { get; set; }
public DbSet<ModelC> Token { get; set; }
public RequestorContext(DbContextOptions<RequestorContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
}
}
今、私はコントローラでそのようなことをしたいと思います:
var request = await _context.Request
.Include(r => r.Emails) //also include tokens - how ???
.SingleOrDefaultAsync(r => r.Id == id);
基本的に、対応するトークンを電子メールに含める方法は? ビューでそのようなことを行うには:
@foreach (var email in Model.Emails)
{
<tr>
<td>@email.Name</td>
<td>@email.Token.Token</td>
<td>@email.Token.getStatusName()</td>
</tr>
}
現在、私はこのようなエラーが発生しています:
RuntimeBinderException: Cannot perform runtime binding on a null reference CallSite.Target(Closure , CallSite , object ) System.Dynamic.UpdateDelegates.UpdateAndExecute1(CallSite site, T0 arg0) AspNetCore._Views_Requestor_Details_cshtml+d__8.MoveNext() in Details.cshtml + @email.Token.getStatusName()
関連した質問
- データベースの接続が異なる2つ(またはそれ以上)の構成ファイルがある場合、移行を介してデータベースを更新するにはどうすればよいですか?
- Blazorロールベースの承認:タイプ 'MicrosoftAspNetCoreIdentityRoleManager'のサービスはありません
- 私のプロジェクトはnetstandard21と互換性がありません。私のプロジェクトは以下をサポートしています:netcore 30
- enitiyfreamworkでエラーを解決する方法は次のとおりです。
- こんにちはこのエラーを解決する方法を教えてください。エラーCS1525:予期しないシンボル「名前空間」、「識別子」または「静的」を期待してコンパイルに失敗しました:1エラー
- 複数のリストボックスを同時にスクロールするWindowsフォーム
- EFで生成された2つの外部キー
- DbContextExecuteSqlRawパラメータがありませんエラー
- gRPCサーバーnetフレームワーク:TLS証明書を使用するように構成する方法
- NET Core TestServerは、存在しないパスへのPOSTリクエストに対して404ではなくステータス200を返します
関連するデータの複数のレベルをロードするには、
ThenInclude
を使用します ここに文書化されています。問題を解決するには、コードは次のようになります。