EF6忽略相关数据

罗伯斯·卡尔斯

设想

public class Product : Entity, IAggregateRoot
{
    public string Name { get; set; }
    public string Dimension { get; set; }
    public decimal Volume { get; set; }
    public bool Featured { get; set; }
    public Farm Farm { get; set; }
    public int FarmId  { get; set; }
    /// <summary>
    /// Sell Price
    /// </summary>
    public decimal BidPrice { get; set; }
    public int QuantityAvaliable { get; set; }
    public ICollection<Image> Images { get; set; }
    public string Description { get; set; }
    public Category Category { get; set; }
    public int CategoryId { get; set; }
    public DateTime Created { get; set; }
    public DateTime? Modified { get; set; }
}

public class Category : Entity, IAggregateRoot
{
    public string Title { get; set; }
    public string CategoryImage { get; set; }
    public Category Parent { get; set; }
    public DateTime Created { get; set; }
    public DateTime? Modified { get; set; }
}

关系设置

public class ProductMap : EntityTypeConfiguration<Product>
{
    public ProductMap()
    {
        HasKey(x => x.Id);

        Property(x => x.Created).HasColumnType("DateTime");
        Property(x => x.Modified).HasColumnType("DateTime");
        Property(x => x.BidPrice).HasColumnType("Decimal");

        #region RELATIONSHIP
        //BelongsTo
        HasRequired(x => x.Farm);
        HasRequired(x => x.Category);

        HasMany(x => x.Images);

        #endregion
    }

所以我有这两个模型,我需要从Product模型中获取带有类别信息的数据

我已经检查了我的数据库,数据是一致的,产品记录具有类别记录的FK。

但是当我尝试使用EF6获取产品数据时,类别信息没有出现,我得到了一个空对象。

Because of = () =>
    {
        _product = _repository.Find(p => p.Id == 1, p => p.Category);
    };

    It should_not_be_bull = () =>
        _product.Category.ShouldNotBeNull();

来自数据库的响应是对于Category为空。但记录在那里。

我以前工作正常。由于某些随机的魔术原因,它只是停止工作。

查找方法

public virtual TEntity Find(Expression<Func<TEntity, bool>> predicate = null, params Expression<Func<TEntity, object>>[] includes)
    {
        var set = CreateIncludedSet(includes);

        return (predicate == null) ?
               set.FirstOrDefault() :
               set.FirstOrDefault(predicate);
    }

CreateIncludeSet

private IDbSet<TEntity> CreateIncludedSet(IEnumerable<Expression<Func<TEntity, object>>> includes)
    {
        var set = CreateSet();

        if (includes != null)
        {
            foreach (var include in includes)
            {
                set.Include(include);
            }
        }

        return set;
    }

CreateSet方法

private IDbSet<TEntity> CreateSet()
    {
        return Context.CreateSet<TEntity>();
    }

我的DbContext实现在这里

https://github.com/RobsonKarls/FreedomWebApi/blob/dev/Source/Freedom.Infrastructure.DataAccess/Factories/FreedomDbContext.cs

所有项目也都在这里,以供进一步分析

任何帮助都是有价值的。

谢谢

阿迪尔·玛玛多夫(Adil Mammadov)

您的代码中的问题在CreateIncludedSet方法的这一行中

set.Include(include);

是的,您包括了数据,但没有更改设置您应该将其更改为以下内容:

set = set.Include(include);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 EF6 中加载相关实体

来自分类Dev

忽略继承属性 EF6

来自分类Dev

在 EF6 中使用数据注释

来自分类Dev

EF6加载相关集合成员的属性

来自分类Dev

MVC EF6显示与用户相关的图像

来自分类Dev

EF6渴望加载相关实体的单个属性

来自分类Dev

启用EF6 LazyLoadingEnabled,但加载相关对象

来自分类Dev

使用Linq返回EF6中的相关实体

来自分类Dev

EF6忽略(NotMapped)所有枚举类型属性

来自分类Dev

为什么在EF6中忽略包括

来自分类Dev

忽略EF6插入中的属性名称

来自分类Dev

EF6,Windows服务和数据库轮询

来自分类Dev

EF6数据库首先使存储过程异步

来自分类Dev

使用EF6和LINQ深度加载数据

来自分类Dev

EF6,Windows服务和数据库轮询

来自分类Dev

无法添加实体数据模型(EF6)

来自分类Dev

EF6 + MySQL-在单个SaveChanges中插入2个相关对象时出错

来自分类Dev

EF6忽略实体类中的[表]和[列]

来自分类Dev

EF6嵌套交易

来自分类Dev

EF6应用代码

来自分类Dev

EF6 TPH与Oracle

来自分类Dev

从EF4升级后,在EF6中查询数据的空引用异常

来自分类Dev

首先在EF6数据库中模拟数据库

来自分类Dev

VS2010,EF6和SQLite EF6提供程序的“ Ado.Net实体数据模型”模板?

来自分类Dev

EF6数据库优先-EF尝试创建我的数据库(但所有表已存在)

来自分类Dev

EF6迁移(LocalDb)更新数据库登录失败

来自分类Dev

在SQL数据库和EF6中保存标志枚举。这可能吗?

来自分类Dev

使用EF6失败的SqlServer数据库镜像故障转移仅镜像原则

来自分类Dev

EF6,代码优先,启用迁移,“无法加载指定的元数据资源”