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 Pro を使用しています。