Csharp/C#教程:在Entity Framework中使用ModelConfiguration会产生错误“不是有效的属性表达式”分享


在Entity Framework中使用ModelConfiguration会产生错误“不是有效的属性表达式”

在我的C#项目中,当EF尝试创建我的数据库时出现错误。当我调用时发生错误

Database.SetInitializer(new CreateDatabaseIfNotExists()); 

错误消息是

 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 Dependancies; public ICollection NeededTasks; public virtual Template Template { get; set; } } [Table("Template")] public class Template : LoggedEntity { public string Description { get; set; } } 

我的配置类如下

 public class TemplateTaskConfiguration : EntityTypeConfiguration { 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 TemplateTasks { get; set; } public DbSet TemplateTaskDependancies { get; set; } public DbSet Templates { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove(); modelBuilder.Configurations.Add(new TemplateTaskConfiguration()); } public void InitializeDatabase() { Database.SetInitializer(new CreateDatabaseIfNotExists()); } } 

从字面上看,问题就是所描述的。 Dependancies是一个领域,而不是财产。 只需将其定义为:

 public virtual ICollection Dependancies { get; set; } 

它应该解决你的问题。

上述就是C#学习教程:在Entity Framework中使用ModelConfiguration会产生错误“不是有效的属性表达式”分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/988710.html

(0)
上一篇 2021年12月24日
下一篇 2021年12月24日

精彩推荐