.net core 如何在asp.net core中先在代码中创建关系
.net core 如何在asp.net core中先在代码中创建关系,.net-core,foreign-keys,ef-code-first,.net Core,Foreign Keys,Ef Code First,ALTER TABLE语句与外键约束冲突FK\u AspNetUsers\u Citys\u City\u ID。冲突发生在数据库UserDBtest3”、表“dbo.Citys”、列“ID”中 一流城市 Failed executing DbCommand (13ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] ALTER TABLE [AspNetUsers] ADD CONSTRAINT [FK_AspNetUsers
ALTER TABLE
语句与外键
约束冲突FK\u AspNetUsers\u Citys\u City\u ID
。冲突发生在数据库UserDBtest3”、表“dbo.Citys”、列“ID”
中
一流城市
Failed executing DbCommand (13ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
ALTER TABLE [AspNetUsers] ADD CONSTRAINT [FK_AspNetUsers_Citys_City_ID] FOREIGN KEY ([City_ID]) REFERENCES [Citys] ([ID]) ON DELETE CASCADE;
公共级城市
{
[关键]
公共int ID{get;set;}
[MaxLength(150)]
公共字符串名称{get;set;}
公共int状态_ID{get;set;}
[外国钥匙(“州ID”)]
公共虚拟状态状态{get;set;}
公共ICollection应用程序用户{get;set;}
公共城市()
{
ApplicationUsers=新列表();
}
}
类用户
public class City
{
[Key]
public int ID { get; set; }
[MaxLength(150)]
public string Name { get; set; }
public int State_ID { get; set; }
[ForeignKey("State_ID")]
public virtual State State { get; set; }
public ICollection<ApplicationUser> ApplicationUsers { get; set; }
public City()
{
ApplicationUsers = new List<ApplicationUser>();
}
}
公共类应用程序用户:IdentityUser
{
[列(TypeName=“nvarchar(150)”)]
公共字符串全名{get;set;}
公共bool活动{get;set;}
public int UserRoleID{get;set;}
[ForeignKey(“UserRoleID”)]
公共虚拟UserRoleTest UserRoleTest{get;set;}
公共整数Person_ID{get;set;}
[外国钥匙(“个人身份证”)]
公共虚拟人{get;set;}
公共int City_ID{get;set;}
[外键(“城市ID”)]
公共虚拟城市城市{get;set;}
公共int状态_ID{get;set;}
[外国钥匙(“州ID”)]
公共虚拟状态状态{get;set;}
}
}
数据上下文
public class ApplicationUser : IdentityUser<int>
{
[Column(TypeName ="nvarchar(150)")]
public string FullName { get; set; }
public bool Active { get; set; }
public int UserRoleID { get; set; }
[ForeignKey("UserRoleID")]
public virtual UserRoleTest UserRoleTest { get; set; }
public int Person_ID { get; set; }
[ForeignKey("Person_ID")]
public virtual Person Person { get; set; }
public int City_ID { get; set; }
[ForeignKey("City_ID")]
public virtual City City { get; set; }
public int State_ID { get; set; }
[ForeignKey("State_ID")]
public virtual State State { get; set; }
}
}
公共类AuthenticationContext:IdentityDbContext
{
公共AuthenticationContext(DbContextOptions选项):基本(选项)
{
}
公共数据库集应用程序用户{get;set;}
公共DbSet UserRoleTests{get;set;}
公共DbSet Prsons{get;set;}
公共数据库集报告{get;set;}
公共数据库集消息{get;set;}
公共数据库集城市{get;set;}
公共数据库集状态{get;set;}
}
根据实体框架
如果希望按照约定发现关系,可以遵循以下模式:
或者如果您不喜欢外键属性(不推荐)
如果未找到外键属性,则将引入阴影外键属性
公共级城市
{
[关键]
public int CityId{get;set;}
//…为简洁起见省略
}
公共类应用程序用户:IdentityUser
{
//为简洁起见省略
公共城市城市{get;set;}
}
public class AuthenticationContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>
{
public AuthenticationContext(DbContextOptions<AuthenticationContext> option):base(option)
{
}
public DbSet<ApplicationUser> ApplicationUsers { get; set; }
public DbSet<UserRoleTest> UserRoleTests { get; set; }
public DbSet<Person> Prsons { get; set; }
public DbSet<Report> Reports { get; set; }
public DbSet<Message> Messages { get; set; }
public DbSet<City> Citys { get; set; }
public DbSet<State> States { get; set; }
}
public class City
{
[Key]
public int CityId { get; set; }
//...omitted for brevity
}
public class ApplicationUser : IdentityUser<int>
{
// omitted for brevity
public City City { get; set; }
public int CityId { get; set; }
}
public class City
{
[Key]
public int Id { get; set; }
//...omitted for brevity
}
public class ApplicationUser : IdentityUser<int>
{
// omitted for brevity
[ForeignKey("IdCity")]
public City City { get; set; }
public int IdCity { get; set; }
}
public class City
{
[Key]
public int CityId { get; set; }
//...omitted for brevity
}
public class ApplicationUser : IdentityUser<int>
{
// omitted for brevity
public City City { get; set; }
}