如何在EF Core中插入后避免插入实体?

时间:2017-07-05 10:07:31

标签: asp.net-core .net-core azure-sql-database entity-framework-core

我在Azure DB上有很多仅用于日志目的的插入,我看到现在这个日志记录占用了大部分DTU。





数据库的加载不是因为插入本身,而是因为插入之后,但因为数据库正在生成 CreationDate 字段,而EFCore在插入后选择它。

& #xA;


为了解决“datetime2”错误转换,我将 CreationDate 字段定义为 entity.Property(e => e.CreationDate) .HasColumnType(“datetime”)。HasDefaultValueSql(“getdate()”);





因此EF在插入后调用数据库:

&# xA;

 (@ p0 uniqueidentifier)SELECT [CreationDate]&#xA; FROM [MyLogs]&#xA; WHERE @@ ROWCOUNT = 1 AND [Id] = @ p0&#xA; < / code> 
&#xA;&#xA;

有没有办法避免这种行为,只是让插入后没有跟踪实体?

&#xA;&#xA; < p>现在,我看到的唯一方法是忽略实体模型中的CreationDate字段它没有被使用。 entity.Ignore(e =&gt; e.CreationDate);

&#xA;

1 个答案:

答案 0 :(得分:0)

您无需忽略该属性。创建默认构造函数并从服务器端初始化属性。

public  class User 
{
  public User()
    {
        this.CreationDate= Datetime.UTC.Now; 
    }
 public int UserId {get;set;}
 public Datetime CreationDate {get;set;}
}

它会在您初始化类时执行。