c# - 来自单独数据库的实体框架核心外键
问题描述
由于我还是一名学生,因此我对 EF Core 和数据库一般来说是新手。我正在制作的项目中要求从应用程序数据库中拥有一个单独的身份数据库。
我已经使用带有一些自定义属性的 ASP.NET Core Identity 设置了身份数据库。我正在整理另一个数据库来存储联系页面的票证,由于某种原因,我似乎无法让外键正常工作。当我迁移新数据库时,它会在我的应用程序数据库中为我已经在 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; }
}
}
模型中的ContactForm类:
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; }
}
}
解决方案
推荐阅读
- aframe - AR.js,对象实体没有出现在 NFT 标记的顶部并且尺寸非常小
- encryption - 在 GNU 无线电中需要 AES 加密
- mysql - 如何在 mysql/mariadb 中查询具有相同 id 的多行
- java - 同一类的两个对象实例在不同的 JVM 进程中运行
- spring-batch - 在spring-batch中动态读取文件
- maven - 如何仅部署多模块 Maven 项目的一部分?
- python - 为什么我的网站的下半部分没有显示?
- vba - VBA用用户表单文本框和组合框替换Outlook html模板中的所有占位符
- firebase - 如何使用 Cloud Firestore 存储只有他们可以读取、写入和删除的私有用户数据?
- python-3.x - 无法使用 python 3.8 构建 opencv-python