[英]Error Creating Controller With Custom Type using Entity Framework MVC ASP.NET
我正在尝试使用其中包含自定义类型的模型创建一个控制器...
我有一个带ID的主类和一个'Work'类型,我在其中声明了三个属性,其中一个依赖于另外两个属性。 然后我创建了一个dbset类型。 我的映射属性是否不正确?
我收到以下错误:运行选定的代码生成器时出错:“无法检索'Stack.Models.Work'的元数据”。 属性sum不是Math类型的声明属性。 通过使用Ignore Method或NotMappedAttribute数据批注验证是否未从模型中显式排除该属性。 确保它是有效的原始属性。
namespace stack.Models
{
public class Work
{
[Key]
public int ID { get; set; }
public Work ()
{
this.Maths = new Math();
}
public Math Maths { get; set; }
}
[ComplexType]
public class Math
{
public int first { get; set; }
public int second { get; set; }
public int sum
{
get
{
try
{
return first + second;
}
catch
{
return 0;
}
}
}
}
public class WorkDBContext: DbContext
{
public DbSet<Work> Working { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Work>()
.Property(c => c.Maths.first).IsRequired();
modelBuilder.Entity<Work>()
.Property(c => c.Maths.second).IsRequired();
modelBuilder.Entity<Work>()
.Property(c => c.Maths.sum).IsRequired();
base.OnModelCreating(modelBuilder);
}
}
}
Sum不是一个简单的类型(数据库中的列)它是一个数据函数(从其他属性计算),您不必将它存储在数据库中。
[ComplexType]
public class Math
{
public int first { get; set; }
public int second { get; set; }
[NotMapped]
public int sum
{
get
{
return first + second;
}
}
}
删除此行:
modelBuilder.Entity<Work>()
.Property(c => c.Maths.sum).IsRequired();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.