MetaModel Klasse

Definition

Stellt eine oder mehrere Datenbanken dar, die von ASP.NET Dynamic Data verwendet werden.

public ref class MetaModel
public class MetaModel
type MetaModel = class
Public Class MetaModel
Vererbung
MetaModel

Beispiele

Im folgenden Beispiel wird gezeigt, wie Sie den Typ verwenden MetaModel , um die folgenden Aufgaben auszuführen, um das automatische Gerüstbau in einer ASP.NET-Website zu verwenden:

  • Rufen Sie das Datenmodell für den Standarddatenkontext ab.

  • Rufen Sie das Datenmodell für einen angegebenen Datenkontext ab.

  • Werten Sie den Routingpfad aus (ermitteln Sie die URL) für eine angegebene Tabelle.

Das Beispiel besteht aus einer Seite und der zugehörigen CodeBehind-Datei.

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

Um das Beispiel zu kompilieren, benötigen Sie Folgendes:

Sehen Sie sich ein Beispiel für den Laufzeitcode dieses Features an: Ausführen.

Hinweise

Mit MetaModel dem Typ können Sie einen oder mehrere Datenkontexte für eine Dynamic Data-Webanwendung registrieren.

Ein Datenkontext ist ein Objekt, das eine Datenbankverbindung darstellt. Ein Datenkontext hat Zugriff auf ein Datenmodell, das eine Datenbank darstellt, die über diese Verbindung verfügbar ist. Ein Datenmodell ist ein Objekt, das die Datenentitäten einer Datenbank als CLR-Typen darstellt. Dynamic Data unterstützt Datenmodelle, die auf LINQ to SQL und dem ADO.NET Entity Framework basieren.

In Visual Studio können Sie Datenmodelltypen mithilfe der Vorlage LINQ to SQL Classes oder der Vorlage ADO.NET Entity Data Model generieren. Diese Vorlagen verwenden den Objektrelationaler Designer (O/R-Designer) für das LINQ to SQL-Modell oder den ADO.NET Entity Data Model Designer (Entity Designer) für das Entity Framework-Modell.

Konstruktoren

MetaModel()

Instanziiert eine neue Instanz der MetaModel-Klasse.

MetaModel(Boolean)

Instanziiert eine neue Instanz der MetaModel-Klasse.

Eigenschaften

Default

Ruft die erste Instanz eines Datenmodells ab, die von der Anwendung erstellt wird.

DynamicDataFolderVirtualPath

Ruft den virtuellen Pfad des Ordners DynamicData auf der Website ab oder legt diesen fest.

EntityTemplateFactory

Ruft das EntityTemplateFactory-Objekt ab, das dem Modell zugeordnet ist, oder legt dieses fest.

FieldTemplateFactory

Ruft eine benutzerdefinierte IFieldTemplateFactory-Schnittstelle ab oder legt diese fest.

FilterFactory

Ruft das FilterFactory-Objekt ab, das dem Modell zugeordnet ist, oder legt dieses fest.

Tables

Ruft eine Auflistung aller Tabellen ab, die Teil des Datenmodells sind.

VisibleTables

Ruft eine Auflistung der sichtbaren Tabellen im Datenmodell ab.

Methoden

CreateTable(TableProvider)

Instanziiert ein MetaTable-Objekt.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetActionPath(String, String, Object)

Gibt den Aktionspfad zurück, der einer bestimmten Tabelle zugeordnet ist.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetModel(Type)

Gibt die Datenmodellinstanz für den angegebenen Kontext zurück.

GetTable(String)

Gibt die Metadaten zurück, die der angegebenen Tabelle zugeordnet sind.

GetTable(String, Type)

Gibt die Metadaten zurück, die die angegebene Tabelle beschreiben.

GetTable(Type)

Gibt die Metadaten zurück, die die angegebene Tabelle beschreiben.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
RegisterContext(DataModelProvider)

Registriert mit einem Datenmodellanbieter eine Datenkontextinstanz.

RegisterContext(DataModelProvider, ContextConfiguration)

Registriert mit der angegebenen Kontextkonfiguration und durch das Aktivieren eines Datenmodellanbieters eine Datenkontextinstanz.

RegisterContext(Func<Object>)

Registriert den Datenkontext, der von einer Kontextfactory angegeben wird.

RegisterContext(Func<Object>, ContextConfiguration)

Registriert mit der angegebenen Kontextkonfiguration und durch das Aktivieren eines benutzerdefinierten Konstruktors eine Datenkontextinstanz.

RegisterContext(Type)

Registriert eine Datenkontextinstanz.

RegisterContext(Type, ContextConfiguration)

Registriert mit der angegebenen Kontextkonfiguration eine Datenkontextinstanz.

ResetRegistrationException()

Setzt einen möglicherweise zuvor aufgetretenen Kontextregistrierungsfehler zurück.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
TryGetTable(String, MetaTable)

Versucht, die Metadaten abzurufen, die der angegebenen Tabelle zugeordnet sind.

TryGetTable(Type, MetaTable)

Versucht, die Metadaten abzurufen, die der angegebenen Tabelle zugeordnet sind.

Gilt für:

Weitere Informationen