添加对非抽象导航属性的引用很好:
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),我就无法实例化Parent
类(因为它是抽象的)我使用Reference
类。
如何为抽象Parent
类添加对现有实体的引用?我想我可以在OtherId
类中添加Entity
属性并设置它,但我希望尽可能避免污染实体
答案 0 :(得分:0)
为什么不将您的抽象类更改为非抽象类
class Parent {
int Id { get; set; }
}
因此,您现在可以实例化它并且行为是相同的。 根据您的示例,您的抽象类不是一个抽象类。