Bonjour à tous,
Il y peu j'ai décidé de me mettre au RIA services j'ai donc suivi le superbe tuto réalisé par Davrous.

J'ai cependant un léger problème au niveau de la validation, je m'explique J'ai une childWindows qui est en fait un formulaire de création de User (je met juste le formulaire):
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
<Grid x:Name="LayoutRoot" Background="White">
		<Grid.RowDefinitions>
            <RowDefinition Height="30"></RowDefinition>
            <RowDefinition Height="30"></RowDefinition>
            <RowDefinition Height="30"></RowDefinition>
            <RowDefinition Height="30"></RowDefinition>
            <RowDefinition Height="30"></RowDefinition>
            <RowDefinition Height="30"></RowDefinition>
            <RowDefinition Height="30"></RowDefinition>
            <RowDefinition Height="36"></RowDefinition>
		</Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="140"></ColumnDefinition>
            <ColumnDefinition Width="249"></ColumnDefinition>
        </Grid.ColumnDefinitions>
 
		<TextBlock Height="25" HorizontalAlignment="Left" Grid.Column="0" Grid.Row="0" VerticalAlignment="Top" Width="130" Foreground="Black" Text="Name :" TextAlignment="Right" TextWrapping="Wrap"/>
		<TextBox x:Name="Tb_Name" Text="{Binding User_Name,Mode=TwoWay,ValidatesOnExceptions=True,NotifyOnValidationError=True}" Height="25" Grid.Column="1" Grid.Row="0" VerticalAlignment="Top" TextWrapping="Wrap" Margin="0,0,8,0"/>
 
        <TextBlock Height="25" HorizontalAlignment="Left" Grid.Column="0" Grid.Row="1" VerticalAlignment="Top" Width="130" Text="First Name :" TextWrapping="Wrap" Foreground="Black" TextAlignment="Right"/>
		<TextBox x:Name="Tb_FirstName" Text="{Binding User_FirstName,Mode=TwoWay,ValidatesOnExceptions=True,NotifyOnValidationError=True}" Height="25" Grid.Column="1" Grid.Row="1" VerticalAlignment="Top" TextWrapping="Wrap" Margin="0,0,8,0"/>
 
        <TextBlock HorizontalAlignment="Left" Grid.Column="0" Grid.Row="2" Width="130" Text="Password :" TextWrapping="Wrap" Foreground="Black" TextAlignment="Right" Height="25" VerticalAlignment="Bottom"/>
		<TextBox x:Name="Tb_Password" Text="{Binding User_Password,Mode=TwoWay,ValidatesOnExceptions=True,NotifyOnValidationError=True}" Grid.Column="1" Grid.Row="2" TextWrapping="Wrap" Height="25" VerticalAlignment="Top" Margin="0,0,8,0"/>
 
        <TextBlock HorizontalAlignment="Left" Grid.Column="0" Grid.Row="3" Width="130" Text="Confirm Password :" TextWrapping="Wrap" Foreground="Black" TextAlignment="Right" Height="25" VerticalAlignment="Bottom"/>
		<TextBox x:Name="Tb_ConfirmPassword" Grid.Column="1" Grid.Row="3" TextWrapping="Wrap" Height="25" VerticalAlignment="Top" Margin="0,0,8,0"/>
 
        <TextBlock HorizontalAlignment="Left" Grid.Column="0" Grid.Row="4" Width="130" Text="Mail :" TextWrapping="Wrap" Height="25" VerticalAlignment="Bottom" Foreground="Black" TextAlignment="Right"/>
		<TextBox x:Name="Tb_Mail" Grid.Column="1" Grid.Row="4" TextWrapping="Wrap" Height="25" VerticalAlignment="Top" Margin="0,0,8,0"/>
 
        <TextBlock HorizontalAlignment="Left" Grid.Column="0" Grid.Row="5" Width="130" Text="Confirm Mail :" TextWrapping="Wrap" Foreground="Black" TextAlignment="Right" Height="25" VerticalAlignment="Top"/>
		<TextBox x:Name="Tb_ConfirmMail" Grid.Column="1" Grid.Row="5" TextWrapping="Wrap" Height="25" VerticalAlignment="Top" Margin="0,4,8,0"/>
 
        <TextBlock x:Name="Lb_ID" Height="25" HorizontalAlignment="Left" Grid.Column="0" Grid.Row="6" VerticalAlignment="Top" Width="130" Text="ID (for login) :" TextWrapping="Wrap" Foreground="Black" TextAlignment="Right"/>
		<TextBox x:Name="Tb_ID" Text="{Binding User_Identifiant,Mode=TwoWay,ValidatesOnExceptions=True,NotifyOnValidationError=True}" Height="25" Grid.Column="1" Grid.Row="6" VerticalAlignment="Top" TextWrapping="Wrap" Margin="0,4,8,0"/>
 
        <Button x:Name="OKButton" Content="OK" Click="OKButton_Click" Width="121" Height="23" HorizontalAlignment="Left"  Grid.Column="1" Grid.Row="7" VerticalAlignment="Bottom" d:LayoutOverrides="Height" Margin="0,0,0,6" />
        <Button x:Name="CancelButton" Content="Cancel" Click="CancelButton_Click" Width="116" Height="23" HorizontalAlignment="Right"  Grid.Column="1" Grid.Row="7" VerticalAlignment="Bottom" d:LayoutOverrides="Height" Margin="0,0,8,6" />
 
    </Grid>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
public User CreatingUser { get; set; }
        public CreateUserChildWindow()
        {
            InitializeComponent();
            CreatingUser = new User();
            LayoutRoot.DataContext = CreatingUser;
        }
Ensuite dans mes metadata j'ai défini des règles de validation comme ceci :

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
17
18
19
20
21
22
23
24
25
26
27
28
29
 
[MetadataTypeAttribute(typeof(User.UserMetadata))]
    public partial class User
    {
  internal sealed class UserMetadata
        {
 
            // Metadata classes are not meant to be instantiated.
            private UserMetadata()
            {
            }
 
            public EntityCollection<Category> Category;
 
            [Required(ErrorMessage = "Required attribute")]
            public string User_FirstName;
 
            public int User_ID;
 
            [Required(ErrorMessage = "Required attribute")]
            public string User_Identifiant;
 
            [Required(ErrorMessage = "Required attribute")]
            public string User_Name;
 
            [Required(ErrorMessage="Required attribute")]
            public string User_Password;
        }
    }
Si je rentre quelque chose dans la textbox et qu'ensuite je supprime son contenu, l'exception est bien levé, mais si je rentre pas dans la textbox alors l'utilisateur se créer mais bien sure cela plante car les regle de validation ne sont pas respecté.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
private void OKButton_Click(object sender, RoutedEventArgs e)
        {
 
            App.MonFavorisHomePageContext.Users.Add(CreatingUser);
            App.MonFavorisHomePageContext.SubmitChanges();
 
 
            this.DialogResult = true;
        }
j'obtien l'erreur suivante :
Erreur : Unhandled Error in Silverlight Application
Code: 4004
Category: ManagedRuntimeError
Message: System.Windows.Ria.DomainOperationException: Submit operation failed validation. Please inspect Entity.ValidationErrors for each entity in EntitiesInError for more information.
à System.Windows.Ria.OperationBase.Complete(Exception error)
à System.Windows.Ria.SubmitOperation.Complete(OperationErrorStatus errorStatus)
à System.Windows.Ria.DomainContext.<>c__DisplayClassb.<SubmitChanges>b__3(Object )

Fichier source : http://localhost:1043/FavorisHomePageTestPage.aspx
Ligne : 56
Sinon je n'arrive pas a créer des classes "Shared" je rajoute bien l'extension shared.cs a mes classes mais l'attribut [shared] n'est pas accepter. Pourtant la classe est bien copié coté client. Me manque t -il un using ?

Merci a tous, Cordialement MoZo