我有一个包含大量表的遗留数据库,我不想处理。migrations.
启用了Code
我用一个实体DbContext
创建了一个小MyEntity
。这个实体是新的,在数据库中还不存在。
问题是,我想在这个新模型中包含一个“遗留”表的外键。
public class MyEntity
{
[Key]
public int Id { get; set; }
public int LegacyEntityId { get; set; }
}
我希望实体框架只关心MyEntity
,并且它知道通过LegacyEntityId
引用另一个预先存在的表,这个表(称为"LegacyEntity“DB)不是DbContext的一部分。
是否可以配置实体框架来处理此场景?我的意思是,我有一个未映射实体(表)的外键,它没有在上下文中建模。
发布于 2020-07-28 02:25:01
评论的内容,
我不认为有什么方法可以像你提到的那样添加一个FK约束。如果您检查文档,您只能向另一个代码第一实体添加一个FK;
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);
}
}
我和EF6一起工作了一段时间,我不认为有这样的功能。
我唯一能想到的就是手动执行SQL,这增加了FK约束;
一些迁移文件:
migrationBuilder.Sql(
@"
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
");
这样,sql将强制执行约束,但您的DbContext将不知道这一点。也就是说,查询可以因为约束而被拒绝。
https://stackoverflow.com/questions/63131011
复制