gpt4 book ai didi

c# - 如何自动填充 CreatedDate 和 ModifiedDate?

转载 作者:可可西里 更新时间:2023-11-01 08:50:52 26 4
gpt4 key购买 nike

我正在学习 ASP.NET Core MVC,我的模型是

namespace Joukyuu.Models
{
public class Passage
{
public int PassageId { get; set; }
public string Contents { get; set; }


public DateTime CreatedDate { get; set; }
public DateTime ModifiedDate { get; set; }
}
}

Passage表是用来保存我写的段落的。

场景

  • Create View 只有一个字段 Contents 来输入一段话。 CreatedDateModifiedDate 必须由服务器自动设置为相等(使用 UTC 格式)。

  • Edit View 只有一个字段 Contents 来编辑一段话。 ModifiedDate 必须由服务器自动设置。

问题

我必须将哪些属性附加到 CreatedDateModifiedDate 属性才能使服务器根据上述情况自动填充它们?

最佳答案

What attributes I have to attach to the CreatedDate and ModifiedDate properties to make them automatically populated by the server based on the above scenario?

解决方案 1)

namespace Joukyuu.Models
{
public class Passage
{
public int PassageId { get; set; }
public string Contents { get; set; }


public DateTime CreatedDate { get; set; }
public DateTime ModifiedDate { get; set; }

public Passage()
{
this.CreatedDate = DateTime.UtcNow;
this.ModifiedDate = DateTime.UtcNow;
}
}
}

并且通过编辑,您必须自己更改/更新它!

解决方案 2)

自定义属性:

[SqlDefaultValue(DefaultValue = "getutcdate()")]
public DateTime CreatedDate { get; set; }

Entity Framework 6 Code first Default value

解决方案 3)

在 Computed 的帮助下:

[Required, DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime CreatedUtc { get; set;


"dbo.Products",
c => new
{
ProductId = c.Int(nullable: false, identity: true),
Name = c.String(),
CreatedUtc = c.DateTime(nullable: false, defaultValueSql: "GETUTCDATE()"),
})
.PrimaryKey(t => t.ProductId);

https://andy.mehalick.com/2014/02/06/ef6-adding-a-created-datetime-column-automatically-with-code-first-migrations/

解决方案 4)您也可以通过手动修改查询来使用命令拦截器执行此操作。

解决方案 5)使用 Repository 模式来管理数据创建并通过 CreateNew 进行设置这是我喜欢的解决方案!

https://msdn.microsoft.com/en-us/library/ff649690.aspx

解决方案 6)只需设置它或进入 UI 或您的 VM。


Entity Framework Core 1.0 中很容易:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Passage>()
.Property(b => b.CreatedDate )
.HasDefaultValueSql("getdate()");
}

关于c# - 如何自动填充 CreatedDate 和 ModifiedDate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38183021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com