我通过了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”列。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)
{
//
}
}