Sorun bağlıyor:
EntityCollectionView içine yeni bir öğe ekleyerek dize alanları için gerekli doğrulama kaldırdı, ama benim amaç için biz sunucu tarafında doğrulama sonra göstermelidir.
Gerçek davranışı: İşte
olan meta dosyasından kodu:EF. dize alanları için gerekli doğrulama hatası [Gerekli] olmadan yükseltmek
[MetadataTypeAttribute(typeof(SomeEntityMetadata))]
public partial class SomeEntity
{
[EntityName]
internal sealed class SomeEntityMetadata
{
private SomeEntityMetadata()
{
}
public long Id { get; set; }
[EntityName(Name = "Name", OrderIndex = 2)]
public string Name { get; set; }
[EntityName(Name = "Data Type", OrderIndex = 1)]
public string Type { get; set; }
}
}
Ve xaml DataGrid
binded bu öğelerin bir koleksiyon:
<navigation:DataGridTemplateColumn CanUserReorder="True"
CanUserSort="True"
Header="Name"
SortMemberPath="Name">
<navigation:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock VerticalAlignment="Center" Text="{Binding Name}"/>
</DataTemplate>
</navigation:DataGridTemplateColumn.CellTemplate>
<navigation:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Name, Mode=TwoWay}" Height="Auto"/>
</DataTemplate>
</navigation:DataGridTemplateColumn.CellEditingTemplate>
</navigation:DataGridTemplateColumn>
<navigation:DataGridTemplateColumn CanUserFilter="True"
CanUserSort="True"
Header="Type"
SortMemberPath="Type">
<navigation:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock VerticalAlignment="Center" Text="{Binding Type}" />
</DataTemplate>
</navigation:DataGridTemplateColumn.CellTemplate>
<navigation:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataTypes, Source={StaticResource entityViewModel}}" SelectedItem="{Binding Type, Mode=TwoWay}/>
</DataTemplate>
</navigation:DataGridTemplateColumn.CellEditingTemplate>
</navigation:DataGridTemplateColumn>
Gördüğünüz gibi alanlar için [Required]
özniteliği yoktur, ancak yeni öğe eklerken Name
ve Type
alanlarınaolarak ayarlanmış hata kodları "Ad alanı gereklidir" ve "Tür alanı gerekiyor" belirir.
Gerekli davranışı: Atla doğrulama gerekli ve Name
veya Type
alanlar boş olduğunda sunucudan ValidationException
atmak.
NOT: Silverlight, EF, WCF RIA, MVVM.
Eğer doğrulama istisnası kendisi atmak isterseniz, sunucudan gidiş gelişi kaydetmek için, neden sunucudan yapmak istediğinizi, wcf Ria servisleri tarafından daha kolay hale getirildi. –
@AkashKava, haklısınız, ancak bağlam içinde karmaşık bir kontrol yapmam gerekiyor. –