1

在我的新站点中,我正在使用 edmx 文件和实体数据源从正常的 n 层设置过渡到实体框架站点。我有一个 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>

我有一个 people 表和一个 siteusers 表:

人员: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
4

0 回答 0