1

asp.net C#WebアプリケーションでTelerik OpenAccessORMを使用しています。私のアプリでは、「Person」という名前のデータベースからテーブルエンティティを基本クラスとしてマッピングし、 「Employee」 という名前のサブドメインクラスを作成しました。次に、サブクラスの垂直継承をBaseクラスに適用し、Employeeサブクラスに「デフォルトマッピング」を使用しました。

Base / Subクラスの両方をクエリしているときに、エラーが発生します:

クエリの実行中にエラーが発生しました:Telerik.OpenAccess.RT.sql.SQLException:無効なオブジェクト名'Employee'。

これらは、コンテキストからクエリに追加される行です。

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

助けてください。

4

1 に答える 1

1

継承戦略を「垂直」に指定すると、これは、各クラスに独自の物理テーブルがあることを意味します。したがって、「従業員」テーブルが欠落しているというエラーが発生します。

PersonとEmployeeの両方のインスタンスを単一のテーブル「Person」に格納する場合は、デフォルトの継承戦略である「Flat」を使用する必要があります。

追加の「Employee」テーブルを作成する場合は、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);
于 2013-02-14T11:26:30.223 に答える