我正在使用最新版本的實體框架查詢有關導航屬性的奇怪問題。導航屬性無法正常工作
我有其中我有被標記爲虛擬幾個所需導航性能的實體。 見下面我的實體類:
public class Folder : UserReferencedEntityBase<int>
{
#region Constructors
public Folder()
{ }
public Folder(IUnitOfWork unitOfWork)
: base(unitOfWork)
{
ParentFolder = unitOfWork.Context.GetCurrentFolder as Folder;
}
#endregion
#region Properties
[Required]
public string Name { get; set; }
[Required]
public string Data { get; set; }
[Column(Order = 998)]
public Folder ParentFolder { get; set; }
[Required]
public bool IsPublished { get; set; }
#endregion
}
這一個是從UserReferencedEntityBase{T}
它看起來像繼承:
public class UserReferencedEntityBase<TKey> : EntityBase<TKey>
{
#region Constructors
public UserReferencedEntityBase() { }
public UserReferencedEntityBase(IUnitOfWork unitOfWork)
{
unitOfWork.ThrowIfNull("unitOfWork");
CreatedBy = unitOfWork.Context.GetCurrentUser;
}
#endregion
#region Properties
[Required]
[Column(Order = 996)]
public virtual IdentityUser CreatedBy { get; set; }
[Column(Order = 997)]
public virtual IdentityUser UpdatedBy { get; set; }
#endregion
}
現在,我有我的MVC網站,我加載一個實體,更新屬性並將其保存在數據庫中:
var model = new FolderManager(UnitOfWork).GetFolder(id);
model.IsPublished = true;
UnitOfWork.Commit();
我在這裏使用自定義工作單元,但沒有任何火箭科學。一切都與同樣的背景下發生的,在同一個請求中,沒有異步調用,...
當我執行的代碼,我收到:
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
見到這種情景,揭示了以下錯誤:
"The CreatedBy field is required."
現在,奇怪的是這樣的,當我調試我的代碼,上面給出的3線,在CREATED_BY財產填充和代碼中並沒有任何問題執行。
我使用ASP.NET身份框架,從而利用該事項情況下IdentityDbContext。
任何人都有線索?
親切的問候
更新 - 文件夾管理器
經理是隻是一個包裝,讓我的內容,我的工作單位:
public Folder GetFolder(int id)
{
return UnitOfWork.FolderRepository.GetByFilter(x => x.Id == id);
}
的GetByFilter方法構造像:
public virtual TEntity GetByFilter(Func<TEntity, bool> filter)
{
DbSet.ThrowIfNull("DbSet");
if (OnBeforeEntityGet != null)
{ OnBeforeEntityGet(this, new RepositoryEventArgs(typeof(TEntity))); }
if (OnEntityGet != null)
{ OnEntityGet(this, new RepositoryEventArgs(typeof(TEntity))); }
return !Entities.Any() ? null : !Entities.Where(filter).Any() ? null : Entities.First(filter);
}
什麼是'FolderManager',它是如何讓你的'文件夾'實例? – 2014-11-14 14:43:24
[避免插入標題到標題](http://stackoverflow.com/help/tagging) – BCdotWEB 2014-11-14 14:50:57
請參閱我更新的問題。 – Complexity 2014-11-14 14:56:38