EF.字符串字段的必需验证错误在没有[Required]属性的情况下引发

Ana*_*uza 10 c# validation silverlight entity-framework mvvm

问题:

在EntityCollectionView中添加新项目时,会为字符串字段引发所需的验证,但出于我的目的,我们应该在服务器端验证后显示它.

实际行为:

这是来自元数据文件的代码:

[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; }

    }
}
Run Code Online (Sandbox Code Playgroud)

这个项目的集合绑定到DataGridxaml:

<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>
Run Code Online (Sandbox Code Playgroud)

如您所见,没有[Required]字段的属性,但是当插入新项目Name并且Type字段设置为String.Empty错误"名称字段是必需的""需要类型字段"时出现.

所需的任务: 跳过要求的验证和扔ValidationException从服务器时NameType字段为空.

注意:Silverlight,EF,WCF RIA,MVVM.

Aka*_*ava 28

为此您可以设置

 [Required(AllowEmptyStrings=true)]
Run Code Online (Sandbox Code Playgroud)

在您想要传递的属性上.