Linqdatasource и проблема реляционных данных - PullRequest
0 голосов
/ 12 июля 2009

У меня проблема с linqdatasource.У меня есть gridview на моей странице, и я установил для его источника данных linqdatasource, также я установил AllowPaging = "True", AllowSorting = "True".

<asp:GridView ID="cityGrid" runat="server" AutoGenerateColumns="False" 
DataKeyNames="CityId" AllowPaging="True" 
AllowSorting="True" DataSourceID="LinqCityData">

Теперь в linqdatasource я хочу получить данные из двух таблиц (реляционные таблицы с FK), на этом этапе нет проблем.Я могу использовать свойство Select linqdatasource, как это, чтобы выбрать из другой таблицы

<asp:LinqDataSource ID="LinqCityData" runat="server" 
ContextTypeName="ContactSysDataContext" 
TableName="Office_ContactSys_Cities" 
Select="new (CityId, CityName , Office_ContactSys_Province.ProvinceName)">
</asp:LinqDataSource>

, или я могу использовать событие Selection в linqdatasource

protected void LinqCityData_Selecting(object sender, LinqDataSourceSelectEventArgs e)
    {
        ContactSysDataContext db = new ContactSysDataContext();
        var CityResult= from p in db.Office_ContactSys_Cities join o in db.Office_ContactSys_Provinces on p.ProvinceId equals o.ProvinceId select new { o.ProvinceName, p.CityId, p.CityName };
        e.Result = CityResult;
    }

, но после этого шага я не могу использовать автоматическийудалить в linqdatasource, и вместо этого я получаю эту ошибку:

LinqDataSource 'LinqCityData' не поддерживает свойство Select, когда включены операции удаления, вставки или обновления

Здесьмой вопрос: Как я могу реализовать разбиение на страницы в gridview (конечно, для реляционных таблиц), используя linqdatasource (linqdatasource с включенным удалением или обновлением)?

1 Ответ

2 голосов
/ 05 августа 2009

Если вы удалите оператор select из linqdatasource, вы больше не получите эту ошибку. И тогда вы можете использовать обновление, удалить и вставить. О, вы также должны включить удаление вставки и обновления в источнике данных.

Вот пример:

<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="Custom.Data.DataAccessDataContext"

    TableName="CustomerSegmentMappings" 
    EnableDelete="True"
    EnableInsert="True"
    EnableUpdate="True">
</asp:LinqDataSource>
...