2012-09-16 3 views
0

У меня есть эта модельИспользование ComplexType с ToList вызывает InvalidOperationException

namespace ProjectTimer.Models 
{ 
    public class TimerContext : DbContext 
    { 
     public TimerContext() 
      : base("DefaultConnection") 
     { 
     } 

     public DbSet<Project> Projects { get; set; } 
     public DbSet<ProjectTimeSpan> TimeSpans { get; set; } 
    } 

    public class DomainBase 
    { 
     [Key] 
     public int Id { get; set; } 
    } 

    public class Project : DomainBase 
    { 
     public UserProfile User { get; set; } 
     public string Name { get; set; } 
     public string Description { get; set; } 
     public IList<ProjectTimeSpan> TimeSpans { get; set; } 
    } 

    [ComplexType] 
    public class ProjectTimeSpan 
    { 
     public DateTime TimeStart { get; set; } 
     public DateTime TimeEnd { get; set; } 
     public bool Active { get; set; } 
    } 
} 

Когда я пытаюсь использовать это действие, я получаю исключение The type 'ProjectTimer.Models.ProjectTimeSpan' has already been configured as an entity type. It cannot be reconfigured as a complex type.

public ActionResult Index() 
     { 
      using (var db = new TimerContext()) 
      { 
       return View(db.Projects.ToList); 
      } 
     } 

Вид использует модель @model IList<ProjectTimer.Models.Project>

Может ли кто-нибудь просветить какой-то свет относительно того, почему это происходит?

ответ

0

Ваше имущество IList<ProjectTimeSpan> не поддерживается EF. Комплексный тип всегда должен быть частью другого типа сущности, вы не можете использовать сложный тип самостоятельно. Если вам абсолютно необходимо иметь ProjectTimeSpan как сложный тип, вам нужно будет создать тип фиктивного объекта, который содержит только ключ и ProjectTimeSpan, и измените тип Project.TimeSpans на список этого нового типа.

+0

Ах, конечно, я должен был это осознать. Благодарю. – Chris

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