执行查询时出错:Telerik.OpenAccess.RT.sql.SQLException:无效的对象名称'Employee'

时间:2013-02-11 07:24:22

标签: c# asp.net telerik telerik-open-access

我在我的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();
        }

请帮忙。

1 个答案:

答案 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);