Я просто играю с некоторыми linq и asp.net - абсолютным новичком, поэтому я даже не уверен точно, как задать свой вопрос.Подключение gridview к нескольким таблицам linqdatasource
В любом случае, у меня есть база данных MSSQL с информацией о членстве asp. По разным причинам (в основном для хранения информации профиля в прозрачных столбцах вместо всех в одном) я использую настраиваемый поставщик профилей, поэтому моя информация профиля распространяется по нескольким таблицам в моей базе данных.
У меня есть обычное aspnet_membership и aspnet_profle, но у меня также есть таблица tblUserProfile, в которой я храню кучу информации о профиле пользователя, например, имя, номер телефона и т. Д. В этом файле tblUserProfile также есть идентификатор компании, ссылаясь на отдельный стол со списком компаний в нем.
Все таблицы имеют GUID UserId как их ключ. Я создал диаграмму datamodel, которая содержит все таблицы, которые я использую, и правильно показывает ключи, соединяющие и т. Д.
Итак, теперь у меня есть gridview, который использует LinqDataSource, который подключен к таблице aspnet_membership. Этот бит до сих пор хорошо работает, я могу отображать всю информацию в таблице aspnet_membership. Я также понял, как показать компанию пользователь находится в так:
<asp:TemplateField HeaderText="Company" SortExpression="tblUserProfile.Company.CompanyName">
<ItemTemplate>
<%#Eval("tblUserProfile.Company.CompanyName") %>
</ItemTemplate>
То, что я не могу понять, как внести изменения в это сохранить в базе данных. Если я изменяю прямые поля в таблице aspnet_membership, они обновляются правильно.
Я создал раскрывающийся список, показывающий все доступные компании, вы можете выбрать компанию для изменения непосредственно в сетке, но когда я пытаюсь ее обновить, она возвращается к исходному значению.
<asp:TemplateField HeaderText="Company" SortExpression="tblUserProfile.Company.CompanyName">
<ItemTemplate>
<%#Eval("tblUserProfile.Company.CompanyName") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="CompanyDropDownList"
DataSourceID="CompanyDataSource"
DataValueField="Id"
DataTextField="CompanyName"
SelectedValue='<%#Bind("tblUserProfile.CompanyID") %>'
runat="server">
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
Я не уверен, если это потому, что мой источник данных подключается к одной таблице (aspnet_membership), но значение, которое я пытаюсь изменить в tblUserProfile. Кажется, что я могу извлекать/отображать значения из других таблиц, связанных через внешние ключи, но могу ли я также обновлять значения в этих таблицах?
Извините за длинный вопрос, но я довольно новичок в этом, поэтому не знаю точно, где проблемы, в противном случае, я был бы более конкретным.
Спасибо за любые указатели
Ах право ... Да, я пытался использовать автоматическое обновление. Я следил за учебником, который работал с гораздо более простой базой данных, но пытался адаптировать его к моей собственной. Мне нужно выяснить код для обработки дополнительного обновления, теперь, когда я знаю, что это нужно сделать. Вы знаете какую-либо документацию, в которой говорится об ограничениях автообновления? – Adam
Я не уверен в документации, хотя я уверен, что она там, но в целом, если речь идет о присоединениях или в основном к чему-то «причудливому», она не будет работать с автоматическим обновлением, и вам придется писать на хотя бы какой-то код. –