繁体   English   中英

使用Entity Framework MVC ASP.NET创建具有自定义类型的控制器时出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM