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
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);
 
            }
        }
    }
}
Lorsque j'exécute le code j'ai l'erreur suivante :
"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

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>
Requete Linq

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();
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]'."

Merci d'avance pour votre aide.