First, I want to thank everyone that has taken the time to help me figure this problem out. Unfortunately, there isn't a lot of documentation to go on for the relationship controls and how to properly use them, which makes this tough. I finally figured out what the problem was. First, this example I provided is a very simple version of what I am trying to load, so I don't think that deep loading is the right answer, but maybe its another way to approach the problem. Second, the Entity keys didn't make a difference, and I looked at a couple of examples that didn't use them either.
Anyway, the solution:
One, I had to move my OnetoOneViewRelationship from the bottom of the page to inside of the <EditItemTemplate> of the ContactView FormView. If it's not inside of the outermost formview, the records don't get updated. I also had to change <ItemTemplate> to <EditItemTemplate> on my inner formview, MembershipView, as well as set it's DefaultMode="edit". Once I made these changes, it worked. My updated source is below.
Can anyone tell me when I should be using a FormView vs. MultiFormView?
So, I will work on some documentation for what I have found and add it to the wiki. Hopefully it will help someone else.
<asp:FormView ID="ContactView" runat="server" DataKeyNames="MxlContactId" DataSourceID="ContactsDataSource1"
DefaultMode="edit" Width="100%">
<EditItemTemplate>
<table border="0" cellpadding="2" cellspacing="2" width="100%">
<tr align="left" valign="top">
<td nowrap="nowrap">
<asp:Label ID="lblFirstName" runat="server" Text="*First Name:"></asp:Label></td>
<td nowrap="nowrap">
<asp:TextBox ID="txtFirstName" runat="server" Text='<%# Bind("FirstName") %>'>
</asp:TextBox></td>
</tr>
</table>
<asp:FormView ID="MembershipView" runat="server" DataKeyNames="UserId" DataSourceID="AspnetMembershipDataSource1"
Width="100%" DefaultMode="edit">
<EditItemTemplate>
<table border="0" cellpadding="2" cellspacing="2" width="100%">
<tr>
<td>
<asp:Label ID="lblUserStatus" runat="server" Text="*User Status:"></asp:Label>
</td>
<td class="ReqField">
</td>
<td>
<asp:CheckBox ID="chkUserStatus" runat="server" Checked='<%# Bind("IsApproved") %>'
Enabled="true" />
</td>
</tr>
</table>
</EditItemTemplate>
</asp:FormView>
<data:OneToOneViewRelationship ID="ContactMembershipRelationship" runat="server">
<PrimaryMember ID="PrimaryMember2" runat="server" DataSourceID="ContactsDataSource1"
ViewControlID="ContactView">
</PrimaryMember>
<ReferenceMember ID="ReferenceMember2" runat="Server" DataSourceID="AspnetMembershipDataSource1"
ViewControlID="MembershipView">
</ReferenceMember>
</data:OneToOneViewRelationship>
</EditItemTemplate>
<HeaderTemplate>
<asp:Button ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update"
Text="Update" />
</HeaderTemplate>
</asp:FormView>
<data:ContactsDataSource ID="ContactsDataSource1" runat="server" SelectMethod="getbyuserfk"
UpdateMethod="Save">
<Parameters>
<asp:QueryStringParameter Name="userFk" QueryStringField="UserId" />
</Parameters>
</data:ContactsDataSource>
<data:Aspnet_MembershipDataSource ID="AspnetMembershipDataSource1" runat="server"
SelectMethod="GetByUserId">
<Parameters>
<asp:QueryStringParameter Name="userId" QueryStringField="UserId" />
</Parameters>
</data:Aspnet_MembershipDataSource>