运行所选代码生成器时发生错误:由于应用程序用户的外键导致无法检索xxx.Goal ..的元数据

问题描述 投票:0回答:1

我对asp.net MVC 5和entityframework 6相当陌生当我尝试使用视图创建控制器时,我不断收到上述错误

这里是我要为以下视图创建视图的模型:

public class Goal
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int GoalId { get; set; }
        [StringLength(120, ErrorMessage = "Max length is 120 and Min length is {0}", MinimumLength = 4)]
        public string Title { get; set; }
        public GoalStatus Status { get; set; }

        public string OwnerUserId { get; set; }        
        public ApplicationUser OwnerUser { get; set; }

        public List<GoalPlan> Plans { get; set; }
    }

这是我的dbcontext类代码

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
            : base("DefaultConnection", throwIfV1Schema: false)
        {

        }


        public virtual DbSet<Goal> Goals { get; set; }
        public virtual DbSet<GoalPlan> GoalPlans { get; set; }
        public virtual DbSet<GoalTask> GoalTasks { get; set; }
        public virtual DbSet<LinkableItem> LinkableItems { get; set; }      


        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }
}

当我注释掉OwnerUserId行时,它可以成功工作。

已创建数据库。

每次在创建控制器之前更改代码时,我都会重新构建项目。

如果我在OwnerUserId上使用[ForeignKey(“ OwnerUser”)]属性,也会失败。

有人可以帮助我为什么我会遇到元数据错误吗?id喜欢继续学习c#mvc。

EDIT ...

所以我将OwnerUserId更改为int,这使得脚手架可以工作。但是问题没有解决...

AspNetUsers是使用以下SQL通过代码首次初始代码迁移创建的。...

CREATE TABLE [dbo].[AspNetUsers] (
[Id]                   NVARCHAR (128) NOT NULL,
[Email]                NVARCHAR (256) NULL,
[EmailConfirmed]       BIT            NOT NULL,

目标/指标方法中的行是 var items = await db.Goals.Include(x => x.OwnerUser).ToListAsync();

在视图中是 Html.DisplayFor(modelItem => item.OwnerUser.UserName)

最后是问题所在,目标表创建如下

CREATE TABLE [dbo].[Goals] (
[GoalId]       INT            IDENTITY (1, 1) NOT NULL,
[Title]        NVARCHAR (120) NULL,
[Status]       INT            NOT NULL,
[OwnerUserId]  INT            NOT NULL,
[OwnerUser_Id] NVARCHAR (128) NULL,
CONSTRAINT [PK_dbo.Goals] PRIMARY KEY CLUSTERED ([GoalId] ASC),
CONSTRAINT [FK_dbo.Goals_dbo.AspNetUsers_OwnerUser_Id] FOREIGN KEY 
([OwnerUser_Id]) REFERENCES [dbo].[AspNetUsers] ([Id])
);

该值存储在OwnerUserId;]中

再次感谢;

我对asp.net MVC 5和entityframework 6还是很陌生,当我尝试创建带有视图的控制器时,我一直收到上述错误。这是我试图为以下视图创建视图的模型:public class ...

c# asp.net-mvc entity-framework asp.net-mvc-5
1个回答
0
投票

好的,这是我自己问题的答案

© www.soinside.com 2019 - 2024. All rights reserved.