首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将外键包含到未映射表?

如何将外键包含到未映射表?
EN

Stack Overflow用户
提问于 2020-07-28 09:26:27
回答 1查看 293关注 0票数 0

我有一个包含大量表的遗留数据库,我不想处理。migrations.

  • I'm

  • I使用的是代码优先。

  • I使用EFCore3.1

启用了Code

我用一个实体DbContext创建了一个小MyEntity。这个实体是新的,在数据库中还不存在。

问题是,我想在这个新模型中包含一个“遗留”表的外键。

代码语言:javascript
运行
复制
public class MyEntity 
{
    [Key] 
    public int Id { get; set; }
    public int LegacyEntityId { get; set; }
}

我希望实体框架只关心MyEntity,并且它知道通过LegacyEntityId引用另一个预先存在的表,这个表(称为"LegacyEntity“DB)不是DbContext的一部分。

是否可以配置实体框架来处理此场景?我的意思是,我有一个未映射实体(表)的外键,它没有在上下文中建模。

EN

回答 1

Stack Overflow用户

发布于 2020-07-28 10:25:01

评论的内容,

我不认为有什么方法可以像你提到的那样添加一个FK约束。如果您检查文档,您只能向另一个代码第一实体添加一个FK;

代码语言:javascript
运行
复制
class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Post>()
            .HasOne(p => p.Blog)
            .WithMany(b => b.Posts)
            .HasForeignKey(p => p.BlogForeignKey);
    }
}

https://learn.microsoft.com/en-us/ef/core/modeling/relationships?tabs=fluent-api%2Cfluent-api-simple-key%2Csimple-key#foreign-key

我和EF6一起工作了一段时间,我不认为有这样的功能。

我唯一能想到的就是手动执行SQL,这增加了FK约束;

一些迁移文件:

代码语言:javascript
运行
复制
migrationBuilder.Sql(
@"
  ALTER TABLE Orders
  ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
");

https://learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/managing?tabs=dotnet-core-cli#customize-migration-code

这样,sql将强制执行约束,但您的DbContext将不知道这一点。也就是说,查询可以因为约束而被拒绝。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63131011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档