如何解决实体框架4.1在上下文中标识新实体
|| 我有一个像下面这样的基类。我所有的实体都继承自此public abstract Entity
{
public DataTime CreationDate{get;set;}
public DataTime ModifiedDate{get;set;}
}
当新实体添加到数据库时,我想设置“ 1”。
通过覆盖SaveChanges()
方法并检查EntityState
处于Modified
状态,我可以设置ModifiedDate
。
问题是我无法通过检查ѭ3来识别它是否是新实体,因为新实体和其他已加载实体处于Added
状态。
那么有没有办法区分新实体?
提前致谢。
解决方法
加载的实体始终处于
Unchanged
状态。处于“ 7”状态的新添加的实体,处于“ 4”状态的已更改实体和处于“ 11”状态的已删除实体。如果您发现任何其他行为,则说明您在做错事或使用EF不正确。顺便说一句。除非您的创建过程不需要很长时间,否则可以通过以下方法简单地设置CreationDate
:
public Entity()
{
CreationDate = DateTime.Now;
}
, 通过浏览through14中的项目并将当前日期/时间分配给CreationDate-Property为null的创建日期来解决此问题。例:
public override int SaveChanges()
{
DateTime saveTime = DateTime.Now;
foreach (var entry in this.ChangeTracker.Entries())
{
if (entry.Entity is Entity)
{
if (entry.Property(\"CreationDate\").CurrentValue == null)
entry.Property(\"CreationDate\").CurrentValue = saveTime;
entry.Property(\"ModifiedDate\").CurrentValue = saveTime;
}
}
return base.SaveChanges();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。