.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; }
}