从存储库中检索实体会导致空引用

时间:2013-02-25 12:41:57

标签: c# entity-framework repository dbcontext

我在存储库中存储内容,需要在调用SaveChanges之前检索该值。结果是null但在调试器中我可以看到存储库包含本地值。

var tenant = TenantRepository.Create(model.TenantName);

// a bit further in the stacktrace I retrieve the entity

var tenant = TenantRepository.GetTenantByName(tenantName);
// now tenant is null.

TenantRepository中的相关方法:

Create方法:

    public Tenant Create(string tenantName)
    {
        var tenant = new Tenant
            {
                Name = tenantName,
                Guid = Guid.NewGuid().ToString()
            };

        if (Exists(tenant.Name))
        {
            throw new TenantAlreadyExistsException(tenant.Name);
        }

        _repository.Add(tenant);

        return tenant;
    }

GetTenantByName方法:

    public Tenant GetTenantByName(string name)
    {
        if (string.IsNullOrEmpty(name))
        {
            throw new ArgumentException("name");
        }

        var foundTenant = GetTenants().SingleOrDefault(tenant => name.Equals(tenant.Name));

        return foundTenant;
    }

    private IQueryable<Tenant> GetTenants()
    {
        return _repository.GetAll().Include(tenant => tenant.Users);
    }

正如您在此图片中所看到的,Tenant中提供了Repository

为什么我无法取回它?我忽略了这个明显的错误吗?

非常感谢提前!

enter image description here

1 个答案:

答案 0 :(得分:1)

可能GetAll()方法不包含AddedState中的实体。在对象上下文中新添加的租户实体的状态将是“AddedState”