我在我的asp.net C#Web应用程序中使用Telerik Open Access ORM。 在我的应用程序中,我已将名为“Person”的数据库中的表实体映射为基类,并创建了一个名为“Employee”的子域类。 然后我将子类的垂直继承应用于Base类,并为Employee Sub类使用“Default mapping”。
在查询Base / Sub类时,我收到错误:
执行查询时出错:Telerik.OpenAccess.RT.sql.SQLException:无效的对象名称'Employee'。
这些是从上下文中添加到查询中的行:
using (EntitiesModel1 obj = new EntitiesModel1())
{
List<Employee> lstEmp = obj.Employees.ToList();
GridView1.DataSource = lstEmp;
GridView1.DataBind();
}
请帮忙。
答案 0 :(得分:1)
当您将继承策略指定为&#39;垂直&#39;这意味着每个班级都拥有自己的物理表。因此,您会收到“员工”的错误。桌子不见了。
如果您想将Person和Employee的实例存储在一个表“人物”中,您需要使用默认的继承策略,即&#39; Flat&#39;。
如果您想创建额外的&#39;员工&#39;然后,您可以使用Schema Handler API并让OpenAccess生成适当的ddl。
var context = new EntityDiagram();
var schemaHandler = context.GetSchemaHandler();
var ddl = schemaHandler.CreateUpdateDDLScript(null);
if(string.IsNullOrEmpty(ddl) == false)
schemaHandler.ExecuteDDLScript(ddl);