MetaModel 类

定义

表示 ASP.NET 动态数据使用的一个或多个数据库。

public ref class MetaModel
public class MetaModel
type MetaModel = class
Public Class MetaModel
继承
MetaModel

示例

以下示例演示如何使用MetaModel类型来执行以下任务,以便在 ASP.NET 网站中使用自动基架:

  • 获取默认数据上下文的数据模型。

  • 获取指定数据上下文的数据模型。

  • 评估路由路径 (确定指定表的 URL) 。

该示例由页面及其代码隐藏文件组成。

using System;
using System.Web.DynamicData;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;

[MetadataType(typeof(ProductMetaData))]
public partial class Product
{
}

public class ProductMetaData
{
}
<%@ Page Language="C#" AutoEventWireup="true" 
CodeFile="PathModel.aspx.cs" 
Inherits="PathModel" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Path Model</title>
</head>
<body>
    <asp:DynamicDataManager ID="DynamicDataManager1" runat="server"
        AutoLoadForeignKeys="true" />
    
    <h3>GetActionPath</h3>
       
    <form id="form1" runat="server">
        <asp:GridView ID="GridDataSource1" runat="server"
        AutoGenerateColumns="false"
        DataSourceID="LinqDataSource1"
        AllowPaging="true">
        <Columns>
        <asp:TemplateField>
          <ItemTemplate>
            <asp:HyperLink ID="HyperLink1" runat="server" 
            NavigateUrl="<%#EvaluateActionPath()%>">ListDetails</asp:HyperLink>
          </ItemTemplate>
         </asp:TemplateField>
          <asp:DynamicField DataField="FirstName" />
          <asp:DynamicField DataField="LastName" />
        </Columns>
      </asp:GridView>

        <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
        TableName="Customers"
        ContextTypeName="AdventureWorksLTDataContext" >
      </asp:LinqDataSource>
    </form>
</body>

</html>
<%@ Page Language="VB" AutoEventWireup="false" 
CodeFile="PathModel.aspx.vb" 
Inherits="PathModel" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Path Model</title>
</head>
<body>
    <asp:DynamicDataManager ID="DynamicDataManager1" runat="server"
        AutoLoadForeignKeys="true" />
    
    <h3>GetActionPath</h3>
       
    <form id="form1" runat="server">
        <asp:GridView ID="GridDataSource1" runat="server"
        AutoGenerateColumns="false"
        DataSourceID="LinqDataSource1"
        AllowPaging="true">
        <Columns>
        <asp:TemplateField>
          <ItemTemplate>
            <asp:HyperLink ID="HyperLink1" runat="server" 
            NavigateUrl="<%#EvaluateActionPath()%>">ListDetails</asp:HyperLink>
          </ItemTemplate>
         </asp:TemplateField>
          <asp:DynamicField DataField="FirstName" />
          <asp:DynamicField DataField="LastName" />
        </Columns>
      </asp:GridView>

        <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
        TableName="Customers"
        ContextTypeName="AdventureWorksLTDataContext" >
      </asp:LinqDataSource>
    </form>
</body>

</html>
Imports System.Web.DynamicData
Imports System.ComponentModel.DataAnnotations
Imports System.ComponentModel

<MetadataType(GetType(ProductMetaData))> _
Partial Public Class Product

End Class


Public Class ProductMetaData
    
   

End Class
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Web.DynamicData;

public partial class PathModel : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DynamicDataManager1.RegisterControl(GridDataSource1);
    }

    // Get the data model. 
    public MetaModel GetModel(bool defaultModel)
    {
        MetaModel model;

        if (defaultModel)
            model = MetaModel.Default;
        else
            model =
               MetaModel.GetModel(typeof(AdventureWorksLTDataContext));
        return model;
    }

    // Get the registered action path.
    public string EvaluateActionPath()
    {
        string tableName = LinqDataSource1.TableName;
        
        MetaModel model = GetModel(false);

        string actionPath =
            model.GetActionPath(tableName,
                System.Web.DynamicData.PageAction.List, GetDataItem());
        return actionPath;
    }
}
Imports System.Collections
Imports System.Configuration
Imports System.Data
Imports System.Linq
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.HtmlControls
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Imports System.Xml.Linq
Imports System.Web.DynamicData

Partial Public Class PathModel
    Inherits System.Web.UI.Page
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
        DynamicDataManager1.RegisterControl(GridDataSource1)
    End Sub

    ' Get the data model. 
    Public Function GetModel(ByVal defaultModel As Boolean) As MetaModel
        Dim model As MetaModel

        If defaultModel Then
            model = MetaModel.[Default]
        Else
            model = MetaModel.GetModel(GetType(AdventureWorksLTDataContext))
        End If
        Return model
    End Function

    ' Get the registered action path.
    Public Function EvaluateActionPath() As String
        Dim tableName As String = LinqDataSource1.TableName

        Dim model As MetaModel = GetModel(False)

        Dim actionPath As String = model.GetActionPath(tableName, System.Web.DynamicData.PageAction.List, GetDataItem())
        Return actionPath
    End Function
End Class

若要编译示例,需要满足以下条件:

请参阅此功能的运行时代码示例: 运行

注解

MetaModel 类型允许为动态数据 Web 应用程序注册一个或多个数据上下文。

数据上下文是表示数据库连接的对象。 数据上下文有权访问一个数据模型,该模型表示通过该连接可用的数据库。 数据模型是一个对象,表示数据库的数据实体为 CLR 类型。 动态数据支持基于LINQ to SQL和 ADO.NET 实体框架的数据模型。

在Visual Studio中,可以使用 LINQ to SQL类 模板或 ADO.NET 实体数据模型 模板生成数据模型类型。 这些模板使用 LINQ to SQL 模型的 对象关系设计器 (O/R 设计器) ,或者实体框架模型的 ADO.NET 实体数据模型设计器 (实体设计器) 。

构造函数

MetaModel()

实例化 MetaModel 类的新实例。

MetaModel(Boolean)

实例化 MetaModel 类的新实例。

属性

Default

获取应用程序创建的数据模型的第一个实例。

DynamicDataFolderVirtualPath

获取或设置 DynamicData 文件夹在网站中的虚拟路径。

EntityTemplateFactory

获取或设置与模型关联的 EntityTemplateFactory 对象。

FieldTemplateFactory

获取或设置自定义 IFieldTemplateFactory 接口。

FilterFactory

获取或设置与模型关联的 FilterFactory 对象。

Tables

获取属于数据模型一部分的所有表的集合。

VisibleTables

获取数据模型中可见表的集合。

方法

CreateTable(TableProvider)

实例化 MetaTable 对象。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetActionPath(String, String, Object)

返回与特定表关联的操作路径。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetModel(Type)

返回指定上下文的数据模型实例。

GetTable(String)

返回与指定表关联的元数据。

GetTable(String, Type)

返回描述指定表的元数据。

GetTable(Type)

返回描述指定表的元数据。

GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
RegisterContext(DataModelProvider)

通过使用数据模型提供程序来注册数据上下文实例。

RegisterContext(DataModelProvider, ContextConfiguration)

通过使用指定的上下文配置并启用数据模型提供程序,注册数据上下文实例。

RegisterContext(Func<Object>)

注册上下文工厂指定的数据上下文。

RegisterContext(Func<Object>, ContextConfiguration)

通过使用指定的上下文配置并启用自定义构造函数,注册数据上下文实例。

RegisterContext(Type)

注册数据上下文实例。

RegisterContext(Type, ContextConfiguration)

使用指定的上下文配置注册数据上下文实例。

ResetRegistrationException()

重置可能发生的任何前一个上下文注册错误。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
TryGetTable(String, MetaTable)

尝试获取与指定表关联的元数据。

TryGetTable(Type, MetaTable)

尝试获取与指定表关联的元数据。

适用于

另请参阅