我有这个模型
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 :(得分:0)
EF不支持您的IList<ProjectTimeSpan>
媒体资源。复杂类型必须始终是另一个实体类型的一部分,您不能单独使用复杂类型。如果您绝对需要将ProjectTimeSpan
作为复杂类型,则需要创建仅包含密钥和ProjectTimeSpan
的虚拟实体类型,并将Project.TimeSpans
的类型更改为这种新类型的清单。