【发布时间】:2012-03-27 17:57:33
【问题描述】:
我有一个基础对象,我不想将其作为实体映射到 DB 中,我只想将属性添加到映射到 DB 中的对象中:
未映射对象(不知道是否重要,但基本对象在另一个程序集中):
public class BaseObject
{
public virtual string Prop1 { get; set; }
public virtual string Prop2 { get; set; }
}
映射对象:
public class ChildObject : BaseObject
{
public virtual string Prop3 { get; set; }
public virtual string Prop4 { get; set; }
public virtual string Prop5 { get; set; }
}
DbContext 中注册了什么
public DbSet<ChildObject> ChildObjects { get; set; }
我想在 Db 中看到什么
table:ChildObject
col:Prop1 (from BaseObject)
col:Prop2 (from BaseObject)
col:Prop3
col:Prop4
col:Prop5
要恢复,我想做的是在 Db 中拥有一个具有子属性和基本属性的表。
这是我目前遇到的错误:
类型“namespace.ChildObject”未映射。检查类型 没有通过使用 Ignore 方法明确排除或 NotMappedAttribute 数据注释。验证类型是否已定义 作为一个类,不是原始的、嵌套的或泛型的,并且不继承 来自实体对象。
我一直在挖掘,但找不到如何做到这一点。
有什么想法吗?
编辑:
@Kyle Trauberman 是对的,但是,由于某种原因,从不同程序集中的基类继承似乎存在问题。我就是这么做的。
class BaseObjectClone : BaseObject { } /* BaseObject being in another assembly */
public class ChildObject : BaseObjectClone {
public virtual string Prop3 { get; set; }
public virtual string Prop4 { get; set; }
public virtual string Prop5 { get; set; }
}
【问题讨论】:
-
那么,您不想将基类中定义的属性映射到数据库吗?还是您希望它们映射?您现在看到的与您想看到的相比?
-
抱歉,可能不清楚。我的意思是我不希望将基础对象映射为不同的实体,但我希望属性显示在子对象中。
-
我的回答here 解决了我的类似情况
标签: c# .net entity-framework code-first fluent-interface