1

動的データ Web アプリを 2 番目のプロジェクトとして MVC 3 アプリに追加しました。動的データ アプリは、MVC 3 アプリで派生した EF 4.1 コンテキストを参照します (最初にコードを記述します)。

DefaultModel.RegisterContext(
    new EFCodeFirstDataModelProvider(() => new MvcApplication1.Models.Context()),
    new ContextConfiguration() { ScaffoldAllTables = true });

Dynamic GridView コントロールを試してみたいのですが、DataSource コントロールの構成方法がわかりません。MVC アプリからの接続文字列がコントロールに対して機能しませんでした。ビルド後も、コントロールの構成ウィザードに何も表示されません。私は完全にウェブフォーム/データソースの読み書きができません。私はここから離れていますか?どうすればいいですか?

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication1.DynamicData.CustomPages.WebUserControl1" %>

<asp:GridView ID="GridView1" runat="server">
</asp:GridView>

<asp:DynamicDataManager ID="DynamicDataManager1" runat="server" />
    <DataControlReference ControlID="GridView1"/>
</asp:DynamicDataManager>

<asp:EntityDataSource ID="EntityDataSource1" runat="server">
</asp:EntityDataSource>
4

2 に答える 2

1

EntityDataSourceコントロールには、DbContext(コードファーストコンテキスト)ではなく、ObjectContext(データベースファーストコンテキスト)が必要です。このチュートリアルは、EntityDataSourceの使用方法を示しており、1年未満です: http ://www.asp.net/web-forms/tutorials/getting-started-with-ef

于 2012-01-09T16:14:47.273 に答える
1

DDテンプレートはかなり遅れています。

これをファイルに追加します。

using System.Linq;
using System.Web.DynamicData;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
public static class ModeContainer<OC> where OC : ObjectContext
{
    private static MetaModel model = new MetaModel();
    static ModeContainer() { model.RegisterContext(typeof(OC), new ContextConfiguration() { ScaffoldAllTables = true }); }
    public static MetaModel Model { get { return model; } }
    public static MetaTable Table<EO>() where EO : EntityObject { return Model.Tables.First(x => x.EntityType == typeof(EO)); }
}

次に、グローバルにこれを含めることができます。

routes.Add(new DynamicDataRoute("{table}/{action}.aspx")
{
    Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
    Model = ModeContainer<ContactsModel.ContactsEntities>.Model
});

次に、ページ内で次のようなことを実行して、ルートの外部で動的に使用できます。

protected void Page_Init(object sender, EventArgs e)
{
    MetaTable table = ModeContainer<ContactsModel.ContactsEntities>.Table<Person>();
    GridView1.SetMetaTable(table);
}

このようなグリッドとソースの側面に沿って:

<asp:GridView ID="GridView1" runat="server" DataKeyNames="Id" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
    <SelectedRowStyle BackColor="Azure" />
    <Columns>
        <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowSelectButton="True" />
        <asp:DynamicField DataField="Contacts" />
        <asp:DynamicField DataField="Addresses" />
    </Columns>
</asp:GridView>


<asp:EntityDataSource ID="EntityDataSource1" runat="server" ConnectionString="name=ContactsEntities" DefaultContainerName="ContactsEntities" EntitySetName="People" EnableDelete="True" EnableInsert="True" EnableUpdate="True" EntityTypeFilter="Person">
</asp:EntityDataSource>
于 2012-01-13T02:18:11.837 に答える