实体框架-添加对抽象导航属性的引用而不加载
本文关键字:引用 加载 属性 导航 框架 添加 抽象 实体 | 更新日期: 2023-09-27 17:58:02
添加对非抽象导航属性的引用是可以的:
class Entity {
int Id { get; set; }
Reference Reference { get; set; }
Parent Other { get; set; }
}
class Reference {
int Id { get; set; }
}
abstract class Parent {
int Id { get; set; }
}
class Child : Parent { }
async Task DbMethod() {
using(var context = new XYZDbContext()) {
var reference = new Reference { Id = 6 };
context.Attach(reference);
var entity = new Entity {
Id = 3,
Reference = reference,
};
context.Add(entity);
await context.SaveChangesAsync();
}
}
但是,如果我想将Other
属性设置为现有记录(比如id 42),我就不能像实例化Reference
类那样实例化Parent
类(因为它是抽象的)。
如何为抽象Parent
类添加对现有实体的引用?我想我可以向Entity
类添加一个OtherId
属性并进行设置,但如果可能的话,我希望避免污染实体
为什么不将抽象类更改为非抽象类
class Parent {
int Id { get; set; }
}
所以你现在可以实例化它,行为是一样的。你的抽象类并不是以你的例子为基础的抽象类。