我刚开始在我的项目中使用代码合同。然而,我的存储库实现存在问题,它使用Entity Framework查询我的数据库。
我有以下方法:
public IEnumerable<Organization> GetAllOrganizations()
{
return _uow.CreateSet<Party>().OfType<Organization>().AsEnumerable();
}
该方法返回一个集合,其中包含数据库中的所有组织,或者如果数据库中没有组织,则返回一个空集合。
然而,根据CodeContracts,这不是可以接受的,因为它会给我一个错误:"requires unproven: source != null"。
它想要告诉我什么?我可以使用Contract.Assume满足代码合同,假设它总是能找到某些东西,但是那样我需要在从数据库读取数据的所有方法中这样做。
我是否遗漏了一些内容,或者这是在使用数据库和LINQ时预期的行为?