我有一个基类,并且有派生类。使用EF4 TPH(Table-per-hierarchy)将基类映射到表。在我的应用程序中,用户可以选择众多派生类中的一个,然后我需要在正确填充“Discriminator”列的情况下保存它们。
在用户界面上,用户输入了Id&仅限名称(基类属性),因此我将用户条目存储在基类对象列表中。由于我知道用户在运行时选择了哪种派生类型,因此我不知道该怎么做。
到目前为止,我已尝试在基础对象上使用Convert.ChangeType来获取派生类对象,然后执行添加到实体。但它失败了“对象必须实现IConvertible。”
不确定我还能做些什么。有任何想法吗?感谢。
答案 0 :(得分:0)
使用var derivedEntity = Activator.CreateInstance(typeof(YourDerivedType));
然后附上它。
或者更好的是,让实体框架为您完成:
var entity = Context.Set<TEntity>().Create();
Context
是DbContext
。
答案 1 :(得分:0)
您可以将对象存储为基类对象列表,但是,您应该实例化派生类对象。如果你不是首先做的,你真的需要不同的课程吗?