Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何避免在EF Core中插入后选择插入的实体?_Asp.net Core_.net Core_Azure Sql Database_Entity Framework Core - Fatal编程技术网

Asp.net core 如何避免在EF Core中插入后选择插入的实体?

Asp.net core 如何避免在EF Core中插入后选择插入的实体?,asp.net-core,.net-core,azure-sql-database,entity-framework-core,Asp.net Core,.net Core,Azure Sql Database,Entity Framework Core,我在Azure DB上有很多只用于日志目的的插入,我看到现在大部分DTU的使用都是通过这个日志记录的 数据库的负载不是因为插入本身,而是因为插入之后,而是因为数据库正在生成CreationDate字段,并且EFCore在插入之后选择它 为了解决“datetime2”错误转换,我将CreationDate字段定义为entity.Property(e=>e.CreationDate).HasColumnType(“datetime”).HasDefaultValueSql(“getdate()”)

我在Azure DB上有很多只用于日志目的的插入,我看到现在大部分DTU的使用都是通过这个日志记录的

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

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

因此,EF在insert之后调用DB:

(@p0 uniqueidentifier)SELECT [CreationDate]
FROM [MyLogs]
WHERE @@ROWCOUNT = 1 AND [Id] = @p0
有没有办法避免这种行为,让实体在插入后不被跟踪


目前,我看到的唯一方法是忽略实体模型中的CreationDate字段,因为它没有被使用<代码>实体.Ignore(e=>e.CreationDate)

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

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

它将在初始化类时执行。

目前没有简单的方法。在EF repo上存档以跟踪功能如果实体框架没有提供您所期望的结果/性能,对我来说,这表明这是一种更适合存储过程或自定义
SqlCommand
@mathijspim的情况。这是一种解决方法,但不是很好的方法,因为它意味着用.NET代码编写SQL代码我不同意,我认为实体框架的要点是让基线快速运行。一旦复杂性超过标准CRUD操作,或者如果性能是一个特性(事实就是这样),那么您需要降低级别。任何东西都可以抽象,这是我不想争论的观点,因为根据具体情况,所有的选择都是可能的。然而,在我的例子中,我解决了它,等待一个很好的解决方案。将请求放在另一个线程中,2。不时存档庞大的日志表,3。为了那种工作而摆脱Azure