c# - EF 核心 : Foreign key returns null value

标签 c# asp.net entity-framework xamarin

我正在尝试以 xamarin 形式访问外键(所有者),但它只返回 null。根据堆栈中的许多其他问题,我似乎必须使用延迟加载或急切加载来从外键获取数据。

由于延迟加载尚未在 Core 中实现,我尝试使用预加载,但我仍然在 xamarin 表单和后端获得 null 值。

我的模型:

public class Building
{
    public int Id { get; set; }
    public string BuildingName { get; set; }
    public string Address { get; set; }
    public int BuildingYear { get; set; }
    public bool BuildingBool { get; set; }
    public ApplicationUser Owner { get; set; }
}

我的仓库:

public IEnumerable<Building> GetAll()
{
    return _context.buildings.Include(b => b.Owner).ToList();
}

我的 Controller :

 public IEnumerable<Building> Get(Building value)
 {
     return _BuildingRepository.GetAll();
 }

我的 DbContext:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
            : base(options)
    {
    }

    public DbSet<Building> buildings { get; set; }

    protected override void OnModelCreating(ModelBuilder builder)
    {
        base.OnModelCreating(builder);
    }
}

这是数据在数据库中的样子: enter image description here

除了我的存储库中的 Include(b => b.Owner) 之外,我还需要其他东西来让它工作吗?

最佳答案

我在您的建筑模型中没有看到外键属性,只有导航属性。

我认为你应该包括:

public int OwnerId { get; set; }

在建筑类中。

关于c# - EF 核心 : Foreign key returns null value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43709108/

相关文章:

c# - 在 LINQ 查询的选择部分调用方法

c# - 使用 LinQ 将一系列值添加到列表中

asp.net - 扩展成员(member) API、MembershipUser

javascript - 在 Javascript 中设置 DateEdit 的日期比其他 DateEdit 早 3 年

asp.net - 如何在ASP.NET MVC中使用Application_Error?

c# - 在 VS2010 中将实体模型从一个项目复制到另一个项目

c# - 对请求资源的访问被拒绝 403 SP-API AMAZON - C#

c# - DataContext.Refresh() 的正确用法是什么?

c# - 如何在不在 csproj 中链接到项目的情况下引用项目?

asp.net-mvc - MVC Entity Framework 验证以防止重复记录