2017-05-29 3 views
1

Ich habe zwei Klasse der erste "movimentação" ist:Entity Framework 7 Fehler Version

public class Movimentacao 
    { 
    public int Id { get; set; } 

    public decimal Valor { get; set; } 

    public DateTime Data { get; set; } 

    public int UsuarioId { get; set; } 

    public Usuario Usuario { get; set; } 
} 

und die andere "Usuario":

public class Usuario 
    { 
    public int Id { get; set; } 


    public string Nome { get; set; } 


    public string Email { get; set; } 

} 

die Fehler geben: „Referenz des Objekts ist nicht für eine Instanz des Objekts definiert“

Klasse index.cshtml:

@foreach (var m in Model) 
     { 
      <tr> 

       <td>@m.Id</td> 
       <td>@m.Usuario.Id></td> //Error line 
       <td>@m.Valor</td> 

      </tr> 
     } 

In Klassenkontext der Version 6 ist die Verwendung "DbModelBuilder", aber nicht in der Version 7 gibt es i bekannten möchte, was ich tun kann, was kann ich anstelle von HasRequired() verwenden:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
    modelBuilder.Entity<Movimentacao>() 
    .HasRequired(c => c.UsuarioId); 


    base.OnModelCreating(modelBuilder); 

} 

Klasse Controller:

public class MovimentacaoController : Controller 
    { 
     private MovimentacaoDAO movimentacaoDAO; 
     private UsuarioDAO usuarioDAO; 

     public MovimentacaoController(MovimentacaoDAO movimentacaoDAO, UsuarioDAO usuarioDAO) 
     { 
      this.movimentacaoDAO = movimentacaoDAO; 
      this.usuarioDAO = usuarioDAO; 
     } 

     public ActionResult Index() 
     { 
      return View(movimentacaoDAO.Lista()); 
     } 

     public ActionResult Form() 
     { 
      ViewBag.Usuarios = usuarioDAO.Lista(); 
      return View(); 
     } 

     public ActionResult Adiciona(Movimentacao movimentacao) 
     { 
      if (ModelState.IsValid) 
      { 
       movimentacaoDAO.Adiciona(movimentacao); 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       ViewBag.Usuarios = usuarioDAO.Lista(); 
       return View("Form"); 
      } 
     } 

    } 

Antwort

0

Es gibt kein EF7. Hier ist das relevante EF Core-Dokumentation Beispiel:

class MyContext : DbContext 
{ 
    public DbSet<Blog> Blogs { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Blog>() 
      .Property(b => b.Url) 
      .IsRequired(); 
    } 
} 

public class Blog 
{ 
    public int BlogId { get; set; } 
    public string Url { get; set; } 
} 

https://docs.microsoft.com/en-us/ef/core/modeling/required-optional