我有一个运行 MVC 4 的 azure Web 应用程序。它使用实体框架(版本 4.3.1.0)和 Code First 以及数据上下文。
我在自己的项目中有数据上下文,也有所有模型文件。
public class AwesomeModelContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<License> Licenses { get; set; }
public DbSet<AppSession> AppSessions { get; set; }
public DbSet<EditSession> EditSessions { get; set; }
public DbSet<Space> Spaces { get; set; }
public DbSet<SpaceUserPrivilege> SpaceUserPrivileges { get; set; }
public DbSet<File> Files { get; set; }
public DbSet<Resource> Resources { get; set; }
public DbSet<Team> Teams { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Remove cascading deletes, having them turned on by default scares me.
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
modelBuilder.Entity<Space>()
.HasMany<SpaceUserPrivilege>(s => s.SpaceUserPrivileges)
.WithRequired(p => p.Space)
.WillCascadeOnDelete(true);
modelBuilder.Entity<User>()
.HasMany<SpaceUserPrivilege>(u => u.SpaceUserPrivileges)
.WithRequired(p => p.User)
.WillCascadeOnDelete(true);
modelBuilder.Entity<Team>()
.HasMany<User>(u => u.Users)
.WithRequired()
.WillCascadeOnDelete(false);
// Run migrations, if any.
Database.SetInitializer<AwesomeModelContext >(new MigrateDatabaseToLatestVersion<AwesomeModelContext , Configuration>());
}
}
相关模型是“团队”,它看起来像这样:
namespace MyAwesomeNamespace.Model
{
public class Team
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public ICollection<User> Users { get; private set; }
}
}
那应该一切都很好。这些是我的整个 Web 应用程序的模型。所以现在我想添加控制器,这样我就可以对模型做一些事情了。所以我做我平时做的事,
右键单击控制器文件夹,然后按“添加控制器”
我将控制器命名为“TeamController”,然后将模型选择为“MyAwesomeNamespace.Model.Team”,将数据上下文选择为“MyAwesomeNamespace.Model.AwesomeModelContext”。
我现在按添加。这将导致以下消息。
“无法检索 'MyAwesomeNamespace.Model.Team' 的元数据。列名 'CreatedOn' 无效。”
有人知道在这里做什么吗?我找不到任何解决方案。
一些额外的信息:
使用 Azure 数据库(在线)。使用 Visual Studio 2010 专业版。