Bonjour,
J'exécute une requête Linq sur un EF dans laquelle j'utilise un champ calculé FullName qui est une propriété de ma classe de mon EF
Lorsque j'exécute le code j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 namespace EvoHotels.Manager.DAL { public partial class Customer { public string FullName { get { return string.Format("{0} {1}", this.Firstname, this.Lastname); } } } }
"Le membre de type spécifié « FullName » n'est pas pris en charge dans LINQ to Entities. Seuls les initialiseurs, les membres d'entité et les propriétés de navigation d'entité sont pris en charge."
Je ne comprends pas trop car ma propriété Fullname que j'utilise dans une autre requete Linq est bien acceptée par ma combobox.
Code Xaml
Requete Linq
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <DataGrid Name="dgRoom" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" CanUserAddRows="False" Margin="6" AutoGenerateColumns="False" SelectionMode="Single"> <!--ItemsSource="{Binding Customers}--> <DataGrid.Columns> <DataGridTextColumn Binding="{Binding Path=Name}" Width="*" Header="Room Number" /> <DataGridTextColumn Binding="{Binding Path=RoomTypeName}" Width="*" Header="Room Type" /> <DataGridCheckBoxColumn Binding="{Binding Path=Reservate}" Width="*" Header="Réservée" /> <DataGridTextColumn Binding="{Binding Path=FullName}" Width="*" Header="Client Name" /> <DataGridTextColumn Binding="{Binding Path=ArrivalDate}" Width="*" Header="Arrival Date" /> <DataGridTextColumn Binding="{Binding Path=DepartureDate}" Width="*" Header="Departure Date" /> </DataGrid.Columns> </DataGrid>
J'aimerais savoir savoir comment je peux utiliser le champ calculé de ma requête Linq Reservation = true pour remplir ma checkbox dont le binding pour l'instant est Reservate car sinon j'ai une erreur : "Une liaison TwoWay ou OneWayToSource ne peut pas fonctionner sur la propriété en lecture seule 'Reservation' de type '<>f__AnonymousType2`6[System.DateTime,System.DateTime,System.String,System.String,System.Boolean,System.String]'."
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 var result = dc.Customers.Join(dc.Orders, c => c.CustomerID, o => o.CustomerID, (c, o) => new { customer = c, order = o }) .Join(dc.Rooms, co => co.order.RoomID, r => r.RoomID, (co, r) => new { co.customer.FullName , co.order.Room.Name, co.order.ArrivalDate, co.order.DepartureDate, Reservation = true, r.RoomTypeID }) .Where(o => o.Name == selectedRoom.Name) .OrderBy(o => o.ArrivalDate); var result2 = result.Join(dc.RoomTypes,r=> r.RoomTypeID , rt=>rt.RoomTypeID, (r,rt) => new {r.ArrivalDate ,r.DepartureDate,r.FullName ,r.Name,r. Reservation, RoomTypeName = rt.Name }); dgRoom.ItemsSource = result2.ToList();
Merci d'avance pour votre aide.
Partager