私はASP.NET MVC 5 チュートリアルに合格し、既存のアプリを mvc 5 に書き直したいと考えています。2 つのテーブルがUsers
ありCategories
、それらが接続されているとしましょうUserID
。
mvc5 では、認証モデルをデータベースに接続できるので、サンプルUser
モデルを次のように更新しました。
public ICollection<Category> Categories { get; set; }
Category
追加したモデルにも
public int UserID { get; set; }
public User User { get; set; }
私は mvc3/ef4 で働いていました。しかし、移行を行うとエラーが発生します:
オブジェクト「PK_dbo.User」は列「Id」に依存しています。1 つ以上のオブジェクトがこの列にアクセスしているため、ALTER TABLE ALTER COLUMN Id は失敗しました。
ここに私のモデルがあります:
ユーザー (サンプル プロジェクトからの 1 対 1 + カテゴリへのリンク)
public class User : IUser
{
public User()
: this(String.Empty)
{
}
public User(string userName)
{
UserName = userName;
Id = Guid.NewGuid().ToString();
}
[Key]
public string Id { get; set; }
public string UserName { get; set; }
public ICollection<Category> Categories { get; set; }
}
カテゴリーモデル
public class Category
{
public int UserID { get; set; }
public User User { get; set; }
public int ID { get; set; }
public int ParentID { get; set; }
public string Name { get; set; }
//....
}
環境
public class BackendDBContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<UserSecret> Secrets { get; set; }
public DbSet<UserLogin> UserLogins { get; set; }
public DbSet<Role> Roles { get; set; }
public DbSet<UserRole> UserRoles { get; set; }
public DbSet<Category> Categories { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
protected override DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry, IDictionary<object, object> items)
{
//
}
}