C# 独立数据库中的实体框架核心外键

C# 独立数据库中的实体框架核心外键,c#,asp.net-core-mvc,relational-database,asp.net-core-2.0,entity-framework-core-2.1,C#,Asp.net Core Mvc,Relational Database,Asp.net Core 2.0,Entity Framework Core 2.1,我是EF核心和数据库的新手,因为我还是一名学生。我有一个要求,在我的项目有一个单独的身份数据库从应用程序数据库 我已经使用ASP.NET核心标识和一些自定义属性设置了标识数据库。我正在建立另一个数据库来存储联系人页面的票证,由于某种原因,我似乎无法使外键正常工作。当我迁移新数据库时,它会在我的应用程序数据库中为我已经在Identity数据库中自定义的Identity类创建一个重复表 我想知道如何防止这种情况发生,以及它是否与外键有关,因为我在网上找到的信息似乎表明EF Core 2.1不支持这种

我是EF核心和数据库的新手,因为我还是一名学生。我有一个要求,在我的项目有一个单独的身份数据库从应用程序数据库

我已经使用ASP.NET核心标识和一些自定义属性设置了标识数据库。我正在建立另一个数据库来存储联系人页面的票证,由于某种原因,我似乎无法使外键正常工作。当我迁移新数据库时,它会在我的应用程序数据库中为我已经在Identity数据库中自定义的Identity类创建一个重复表

我想知道如何防止这种情况发生,以及它是否与外键有关,因为我在网上找到的信息似乎表明EF Core 2.1不支持这种情况

标识模型中的类:

using Microsoft.AspNetCore.Identity;

namespace WebTemplate.Models
{
    public class Identity : IdentityUser
    {
        public string Building { get; set; }
        public string Room { get; set; }
        public string FullName { get; set; }
    }
}
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace WebTemplate.Models
{
    public enum StatusCode
    {
        [Display(Name="Open")]Open,
        [Display(Name = "Under Review")] UnderReview,
        [Display(Name = "Pending Change")] PendingChange,
        [Display(Name = "Closed-Resolved")] Resolved,
        [Display(Name = "Closed-No Action")] NoAction
    }

    public class ContactForm
    {
        [Key]
        public int ContactFormId { get; set; }
        public string SenderId { get; set; }
        [ForeignKey("SenderId")]
        public Identity Sender { get; set; }
        public string Subject { get; set; }
        public string Content { get; set; }
        public StatusCode Status { get; set; }
    }
}
ContactForm型号中的类别:

using Microsoft.AspNetCore.Identity;

namespace WebTemplate.Models
{
    public class Identity : IdentityUser
    {
        public string Building { get; set; }
        public string Room { get; set; }
        public string FullName { get; set; }
    }
}
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace WebTemplate.Models
{
    public enum StatusCode
    {
        [Display(Name="Open")]Open,
        [Display(Name = "Under Review")] UnderReview,
        [Display(Name = "Pending Change")] PendingChange,
        [Display(Name = "Closed-Resolved")] Resolved,
        [Display(Name = "Closed-No Action")] NoAction
    }

    public class ContactForm
    {
        [Key]
        public int ContactFormId { get; set; }
        public string SenderId { get; set; }
        [ForeignKey("SenderId")]
        public Identity Sender { get; set; }
        public string Subject { get; set; }
        public string Content { get; set; }
        public StatusCode Status { get; set; }
    }
}
AppIdentityDbContext

//removed for brevity
namespace WebTemplate.Models
{
    public class AppIdentityDbContext : IdentityDbContext<Identity>
    {
        public AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options) : base(options) { }
        //Seed Data removed for brevity
    }
}
//removed for brevity
namespace WebTemplate.Models
{
    public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
        public DbSet<ContactForm> ContactForms { get; set; }
    }
}
//为简洁起见,已删除
命名空间WebTemplate.Models
{
公共类AppIdentityDbContext:IdentityDbContext
{
公共AppIdentityDbContext(DbContextOptions选项):基本(选项){}
//为简洁起见,删除了种子数据
}
}
ApplicationDbContext

//removed for brevity
namespace WebTemplate.Models
{
    public class AppIdentityDbContext : IdentityDbContext<Identity>
    {
        public AppIdentityDbContext(DbContextOptions<AppIdentityDbContext> options) : base(options) { }
        //Seed Data removed for brevity
    }
}
//removed for brevity
namespace WebTemplate.Models
{
    public class ApplicationDbContext : DbContext
    {
        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
        public DbSet<ContactForm> ContactForms { get; set; }
    }
}
//为简洁起见,已删除
命名空间WebTemplate.Models
{
公共类ApplicationDbContext:DbContext
{
公共应用程序DBContext(DbContextOptions选项):基本(选项){}
公共DbSet ContactForms{get;set;}
}
}

外键不能跨数据库。只能将它们应用于同一数据库中的表。