.net EF 4.0向上下文添加对象时出现问题

.net EF 4.0向上下文添加对象时出现问题,.net,entity-framework,.net,Entity Framework,我为EF制作了一个通用保存功能: public void Save(T entity) { using (C context = new C()) { string entitySetName = context.FindEntitySetByEntity<T>(); T entityInDDBB = GetEntityByKey(entity, entitySetName, context);

我为EF制作了一个通用保存功能:

public void Save(T entity)
    {
        using (C context = new C())
        {
            string entitySetName = context.FindEntitySetByEntity<T>();

            T entityInDDBB = GetEntityByKey(entity, entitySetName, context);

            //if we didn't find the entity in database make an insert, if not an update.
            if (entityInDDBB == null)
            {

                **context.AddObject(entitySetName, entity);**
            }
            else
            {
                context.ApplyCurrentValues(entitySetName,  entity);
            }

            context.SaveChanges();
        }
    } 
公共作废保存(T实体)
{
使用(C context=newc())
{
字符串entitySetName=context.findentititySetByEntity();
T entityInDDBB=GetEntityByKey(实体、entitySetName、上下文);
//如果我们在数据库中找不到实体,请进行插入(如果不是更新)。
if(entityInDDBB==null)
{
**AddObject(entitySetName,entity)**
}
其他的
{
ApplyCurrentValues(entitySetName,entity);
}
SaveChanges();
}
} 
问题是,如果我们将派生类型传递给AddObject(f.e:teacher),但映射需要Person,那么它会抛出一个错误

我怎样才能将类型更改为对象(我想如果不创建一个新的类型,这是不可能的),或者您知道任何其他方法使其工作吗


注意。

Well EF不允许您将一个CLR类视为另一个CLR类

i、 你不能把老师当作人来对待

鉴于这种局限性,教师也必须是一个实体,否则这将永远失败

但从您的描述来看,似乎您没有教师实体或教师映射信息

不幸的是,这是没有办法的

亚历克斯


注意:如果您有教师实体和映射,并且
findentititysetbyentity()
返回与
findentititysetbyentity()
相同的值,那么您的代码应该可以正常工作。EF不允许您将一个CLR类视为另一个CLR类

i、 你不能把老师当作人来对待

鉴于这种局限性,教师也必须是一个实体,否则这将永远失败

但从您的描述来看,似乎您没有教师实体或教师映射信息

不幸的是,这是没有办法的

亚历克斯


注意:如果您有教师实体和映射,并且如果
findentititysetbyentity()
返回与
findentititysetbyentity()
相同的值,那么代码应该可以正常工作。请确保在实体数据模型中正确定义了继承关系。这里有一篇关于它的好文章:


确保在实体数据模型中正确定义了继承关系。这里有一篇关于它的好文章:


您收到的错误消息是什么?您收到的错误消息是什么?