简体   繁体   English

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

[英]Error executing query: Telerik.OpenAccess.RT.sql.SQLException: Invalid object name 'Employee'

I am using Telerik Open Access ORM in my asp.net C# web application. 我在asp.net C#Web应用程序中使用Telerik Open Access ORM。 In my app, I have mapped a table entity from database named "Person" as base class and created a Sub Domain Class named "Employee" . 在我的应用程序中,我已将名为“ Person”的数据库中的表实体映射为基类,并创建了名为“ Employee”的子域类。 Then I have applied vertical inheritance for subclass to the Base class and used "Default mapping" for the Employee Sub class. 然后,我已将垂直继承的子类应用于基类,并将“默认映射”用于Employee子类。

While querying both Base/Sub class I am getting error : 同时查询基类/子类时,出现错误:

Error executing query: Telerik.OpenAccess.RT.sql.SQLException: Invalid object name 'Employee'. 执行查询时出错:Telerik.OpenAccess.RT.sql.SQLException:对象名称'Employee'无效。

These are the lines added to query from the context: 这些是从上下文中添加到查询中的行:

       using (EntitiesModel1 obj = new EntitiesModel1())
        {
            List<Employee> lstEmp = obj.Employees.ToList();
          GridView1.DataSource = lstEmp;
          GridView1.DataBind();
        }

Please help. 请帮忙。

When you specify the Inheritance strategy to be 'Vertical' this implies that each class has it's own physical table. 当您将继承策略指定为“垂直”时,这意味着每个类都有其自己的物理表。 Hence you get the error that 'Employee' table is missing. 因此,您会收到“员工”表丢失的错误。

If you want to store instances of both Person and Employee in a single table 'Person', you need to use the default Inheritance strategy, which is 'Flat'. 如果要将Person和Employee的实例存储在单个表“ Person”中,则需要使用默认的继承策略,即“ Flat”。

In case you want to create the additional 'Employee' table then you can use the Schema Handler API and let OpenAccess generate the apporpriate ddl. 如果要创建其他“雇员”表,则可以使用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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM