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, Type)

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

GetTable(String)

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

GetTable(Type)

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

GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
RegisterContext(DataModelProvider, ContextConfiguration)

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

RegisterContext(DataModelProvider)

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

RegisterContext(Func<Object>, ContextConfiguration)

使用指定的上下文配置和启用自定义构造函数来注册数据上下文实例。

RegisterContext(Func<Object>)

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

RegisterContext(Type, ContextConfiguration)

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

RegisterContext(Type)

注册数据上下文实例。

ResetRegistrationException()

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

ToString()

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

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

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

TryGetTable(Type, MetaTable)

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

适用于

另请参阅