-1

所以这里是一个快速的概述。我正在使用 Code First,新数据库。

概述

如您所见,我创建了一个 AccountModels 模型(与默认名称相同,以防任何人感到困惑)。它如下所示:

public class User
{
    public int UserId { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
    public string Email { get; set; }
    public virtual ICollection<Stat> Stats { get; set; }
}

public class Stat
{
    public int StatId { get; set; }
    public string Age { get; set; }
    public string Height { get; set; }
    public string Weight { get; set; }
    public bool Sex { get; set; }

    public int UserId { get; set; }
    public virtual User User { get; set; }
}

public class BodylogDbContext : DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<Stat> Stats { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        Database.SetInitializer<BodylogDbContext>(null);
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}

现在,当我尝试添加控制器时,我无法选择我的模型类 AccountModel。我记得,我应该能够选择模型类,然后在下一个字段中选择我的数据上下文类 - BodylogDbContext (Bodylog.Models),并且应该设置所有内容。但我不能,为什么?

创建控制器

这是我的连接字符串。

   <add name="BodylogDbContext"
   connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Bodylog.mdf;Integrated Security=True"
   providerName="System.Data.SqlClient"
/>
4

2 回答 2

0

拥有.cs文件不会创建“隐含”类。您只会在下拉列表中看到具有具体定义的类型。因此,如果您想要一个父类AccountModel(所有其他 POCO 定义该模型的属性),您将需要类似以下内容:

public class AccountModel
{
    public User UserModel { get; set; }
    public Stat StatModel { get; set; }
}

所以你的 Razor 模型绑定看起来类似于:

@model Your.Fully.Qualified.Namespace.AccountModel

您可以像这样绑定到模型的 User 属性:

@Html.EditorFor(m => m.UserModel.Email)

于 2013-04-14T19:25:47.833 回答
0

一切都在这里按预期工作。这里的问题之一是在示例项目中,提供了一个名为 AccountModels.cs 的文件,其中包含多个模型类。约定规定这些实际上被拆分为多个文件,每个类一个文件,并以该类命名。

您的项目中没有名为 AccountModels 的类,这就是为什么它没有作为模型的选项出现的原因。

于 2013-04-14T19:13:27.113 回答