2014-09-25 24 views
0

在我的C#項目,我得到一個錯誤時,EF嘗試創建我的數據庫 當我打電話實體框架中使用ModelConfiguration提供了一個錯誤「是不是有效的屬性表達」

Database.SetInitializer(new CreateDatabaseIfNotExists<ApplicationDatabase>()); 

的出現的錯誤錯誤消息是

The expression 'x => x.Dependancies' is not a valid property expression. The expression should represent a property: C#: 't => t.MyProperty' VB.Net: 'Function(t) t.MyProperty'. 

我的域類如下

[Table("LoggedEntity")] 
public class LoggedEntity 
{ 
    public int Id { get; set; } 
} 

[Table("TemplateTaskDependancy")] 
public class TemplateTaskDependancy : LoggedEntity 
{ 
    [Column] 
    public int NeededTaskId { get; set; } 

    [Column] 
    public int TaskId { get; set; } 

    [Required] 
    [ForeignKey("TaskId")] 
    public virtual TemplateTask Task { get; set; } 

    [Required] 
    [ForeignKey("NeededTaskId")] 
    public virtual TemplateTask NeededTask { get; set; } 
} 

[Table("TemplateTask")] 
public class TemplateTask : LoggedEntity 
{ 
    public ICollection<TemplateTaskDependancy> Dependancies; 

    public ICollection<TemplateTaskDependancy> NeededTasks; 

    public virtual Template Template { get; set; } 
} 

[Table("Template")] 
public class Template : LoggedEntity 
{ 
    public string Description { get; set; } 
} 

我的配置類是如下

public class TemplateTaskConfiguration : EntityTypeConfiguration<TemplateTask> 
{ 
    public TemplateTaskConfiguration() 
    { 
     HasMany(x => x.Dependancies) 
      .WithRequired(d => d.Task) 
      .HasForeignKey(d => d.TaskId) 
      .WillCascadeOnDelete(false); 

     HasMany(x => x.NeededTasks) 
      .WithRequired(d => d.NeededTask) 
      .HasForeignKey(d => d.NeededTaskId) 
      .WillCascadeOnDelete(false); 
    } 
} 

我的上下文是如下

public class ApplicationDatabase : DbContext 
{ 
    public DbSet<TemplateTask> TemplateTasks { get; set; } 

    public DbSet<TemplateTaskDependancy> TemplateTaskDependancies { get; set; } 

    public DbSet<Template> Templates { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); 
     modelBuilder.Configurations.Add(new TemplateTaskConfiguration()); 
    } 

    public void InitializeDatabase() 
    { 
      Database.SetInitializer(new CreateDatabaseIfNotExists<ApplicationDatabase>()); 
    } 
} 
+0

你確定它不應該是依賴關係?而不是依賴? – 2014-09-25 23:39:33

+0

是的 - 拼寫檢查通過,但我只使用依賴 – 2014-09-25 23:42:49

回答

2

毫不誇張地說,是什麼問題描述。 Dependancies是一個字段,而不是一個屬性。只需將其定義爲:

public virtual ICollection<TemplateTaskDependancy> Dependancies 
{ 
    get; 
    set; 
} 

它應該可以解決您的問題。

相關問題