Поделиться через


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 позволяет зарегистрировать один или несколько контекстов данных для веб-приложения с динамическими данными.

Контекст данных — это объект, представляющий подключение к базе данных. Контекст данных имеет доступ к одной модели данных, которая представляет базу данных, доступную через это подключение. Модель данных — это объект, представляющий сущности данных базы данных в виде типов CLR. Динамические данные поддерживают модели данных на основе LINQ to SQL и ADO.NET Entity Framework.

В Visual Studio можно создавать типы моделей данных с помощью шаблона LINQ to SQL Classes или шаблона модели данных сущности ADO.NET . В этих шаблонах используется реляционный конструктор объектов (конструктор объектов) для модели LINQ to SQL или конструктор моделей ADO.NET entity data model (конструктор сущностей) для модели Entity Framework.

Конструкторы

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)

Пытается получить метаданные, связанные с заданной таблицей.

Применяется к

См. также раздел