验证对上下文的更改时,EF6和延迟加载,关联实体为空

时间:2014-05-01 14:11:13

标签: c# entity-framework validation

这对我来说似乎很奇怪。我正在使用EF6加载实体,更改它并保存它。简单的例子如下。

负载:

 var clientQuery = from x in Context.Clients
                    where x.DateTimeCreated > latest_time
                    orderby x.DateTimeCreated descending, x.IsPosted ascending
                    select x;
        this.Clients = new ObservableCollection<Client>(clientQuery);
        int cnt = this.Clients.Count;
        TotalPages = cnt / itemsPerPage;
        if (cnt % itemsPerPage != 0)
            TotalPages += 1;
        clientViewSource.Source = this.Clients;

客户有一个关联的实体,为简单起见,我们可以称之为&#34; Case&#34;。加载此查询时,也会加载个案。我可以查看选定的客户端及其Case和所有值。我对该实体进行了一些更改。

               this.Client.IsAssigned = true;
               this.Client.AssignedUser = (combo_users.SelectedItem as User);
               this.Context.SaveChanges();

我使用IValidatableObject类来确保所有值都有效。但是,在检查“客户”时实体,其相关的&#34;案例&#34;在验证期间为null。在点击SaveChanges之前,我已经验证了Context已经发生了变化,而且客户的情况已经发生了变化。不是空的。我在这里遗漏了什么,我希望得到的结果不是用于验证吗?

验证示例:

public partial class Client : IValidatableObject
{
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if(IsStrategic)
        {
            if(StrategicCase.ExternalLeadSource == null)
            {
                yield return new ValidationResult
                ("No external lead source set.", new [] {"StrategicCase.ExternalLeadSource"});
            }
        }
    }
}

0 个答案:

没有答案