新しいサイトでは、通常のn層のセットアップから、edmxファイルとエンティティデータソースを使用するEntityFrameworkサイトに移行しています。SiteUsersAdd.aspxページがあります。これがマークアップです...
<asp:EntityDataSource ID="SiteUserDataSource" runat="server"
ContextTypeName="NutritionBridgeModel.NutritionBridgeEntities"
EnableFlattening="False" EntitySetName="SiteUsers" EnableInsert="True"
Include="Person" ConnectionString="name=NutritionBridgeEntities"
DefaultContainerName="NutritionBridgeEntities" >
</asp:EntityDataSource>
<asp:EntityDataSource ID="DataUserTypes" runat="server"
ConnectionString="name=NutritionBridgeEntities"
DefaultContainerName="NutritionBridgeEntities" EnableFlattening="False"
EntitySetName="SiteUserTypes" Select="it.[SiteUserTypeID], it.[Description]">
</asp:EntityDataSource>
<asp:EntityDataSource ID="DataSubscriptionTypes" runat="server"
ConnectionString="name=NutritionBridgeEntities"
DefaultContainerName="NutritionBridgeEntities" EnableFlattening="False"
EntitySetName="SubscriptionTypes"
Select="it.[Description], it.[SubscriptionTypeID]">
</asp:EntityDataSource>
<asp:DetailsView ID="detailsInsertSiteUser" runat="server" AutoGenerateRows="False" DataSourceID="SiteUserDataSource" DefaultMode="Insert" CssClass="standardTable" >
<Fields>
<asp:BoundField DataField="FirstName" HeaderText="First Name" ReadOnly="True" HeaderStyle-CssClass="rowHeader" SortExpression="FirstName" ControlStyle-CssClass="standardTextbox" />
<asp:BoundField DataField="LastName" HeaderText="Last Name" ReadOnly="True" HeaderStyle-CssClass="rowHeader" SortExpression="LastName" ControlStyle-CssClass="standardTextbox" />
<asp:BoundField DataField="Email" HeaderText="Email" ReadOnly="True" HeaderStyle-CssClass="rowHeader" SortExpression="Email" ControlStyle-CssClass="standardTextbox" />
<asp:BoundField DataField="Password" HeaderText="Password" ReadOnly="True" HeaderStyle-CssClass="rowHeader" SortExpression="Password" ControlStyle-CssClass="standardTextbox" />
<asp:TemplateField HeaderText="User Type" SortExpression="UserTypeID" HeaderStyle-CssClass="rowHeader">
<InsertItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="DataUserTypes" DataTextField="Description"
DataValueField="SiteUserTypeID" CssClass="standardDropdown">
</asp:DropDownList>
</InsertItemTemplate>
</asp:TemplateField>
<asp:CheckBoxField DataField="Active" HeaderText="Active" ReadOnly="True" HeaderStyle-CssClass="rowHeader" SortExpression="Active" />
<asp:TemplateField HeaderText="Subscription Type" HeaderStyle-CssClass="rowHeader" SortExpression="SubscriptionTypeID">
<InsertItemTemplate>
<asp:DropDownList ID="ddlSubscriptionTypes" runat="server"
DataSourceID="DataSubscriptionTypes" DataTextField="Description"
DataValueField="SubscriptionTypeID" CssClass="standardDropdown">
</asp:DropDownList>
</InsertItemTemplate>
</asp:TemplateField>
<asp:CheckBoxField DataField="TestAccount" HeaderText="Test Account" HeaderStyle-CssClass="rowHeader" ReadOnly="True" SortExpression="TestAccount" />
<asp:CommandField ShowInsertButton="True" ControlStyle-CssClass="standardButton" ItemStyle-CssClass="submitArea" />
</Fields>
</asp:DetailsView>
私はpersonsテーブルとsiteusersテーブルを持っています:
PERSONS:PersonID、FirstName、LastName SITEUSERS:SiteUserID、PersonIDなど。
したがって、新しいSITEUSERを作成するときは、新しいPERSONも作成したいと思います。entitydatasourceを使用してこれを行うためのエレガントな方法はありますか?コードビハインドに含める必要がありますか?もしそうなら、それはどのように見えますか?これまでのところ、コードビハインドにある場合は、このようなものである必要があると思います...
Protected Sub detailsInsertSiteUser_ItemInserting(sender As Object, e As System.Web.UI.WebControls.DetailsViewInsertEventArgs) Handles detailsInsertSiteUser.ItemInserting
NutritionBridgeContext = New NutritionBridgeEntities
'insert new person
Dim intPersonID As Integer = 0
'use the generated identity field to insert into SiteUser record
e.Values("PersonID") = intPersonID
End Sub