Binding de propriété définie dans un datagrid
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:
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:
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:
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.