Сценарий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
}
Так что у меня это две модели, где мне нужно, чтобы привести данные модели продукта с информацией Категория
Я проверил моя база данных, данные согласованы, в записи продукта есть FK для записи в категории.
но когда я пытаюсь получить данные о продукте с помощью EF6, информация о категории не приходит, я получаю нулевой объект.
Because of =() =>
{
_product = _repository.Find(p => p.Id == 1, p => p.Category);
};
It should_not_be_bull =() =>
_product.Category.ShouldNotBeNull();
Ответ от базы данных для категории является нулевым. но запись есть.
У меня было это нормально. по какой-то случайной магической причине он просто перестает работать.
метод FIND
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 здесь
всего проект находится там для дальнейших анализов
любой помощь ценна.
Спасибо
[код] публичный виртуальный TEntity Find (Expression> предикат = NULL, Params Expression > [] включает в себя) [/code] Метод принимает 2 параметра, сначала для Where() и Second one для Include –
RobsionKarls