【问题标题】:Is it possible for a model ID to contain date when its made?模型 ID 是否可以包含制作日期?
【发布时间】:2019-12-17 09:17:29
【问题描述】:

我有一个模型,它需要一个包含其制作日期的 ID,如果当天制作的不止一个,他们需要附加一个数字,如下所示:

15122019

16122019-1

16122019-2

17122019

类似这样的东西,它需要自动制作,无需用户输入.. 这可能吗? 这就是我的模型现在的样子:

public class RaidRequest
{

    public int Id { get; set; }
    [Required]
    public Permissions Access { get; set; }
    [Required]        
    public Group UserOrAdmin { get; set; }        
    [Required]
    public string Department { get; set; }
    [Required]
    public string NameSurname { get; set; }
    [Required]
    public string Reason { get; set; }
    [Required]
    public string UNCPath { get; set; }
   
}

这怎么可能?

【问题讨论】:

  • 如果我没看错,您是否希望将string 类型数据存储在int 类型变量中?
  • int 只是临时检查系统是否正常工作。
  • 数据库中的 ID 是什么?是 varchar 吗?或整数或日期???
  • 现在是int,但可能需要是string
  • @RenārsTreimanis 它需要保持一个整数,由数据库自动生成(使用 IDENTITY 或 SEQUENCE)并包含no业务信息。 “智能”键根本不是一个聪明的主意

标签: c# asp.net asp.net-mvc model-view-controller


【解决方案1】:

是的,这是可能的。但是,要拥有这样的格式16122019-1,您需要字符串列。这样的逻辑应该在业务层实现

另外,如果系统负载很高,您必须考虑并发插入,以获得正确的增量值


代码改进: 您的请求模型不应包含未使用的字段(如Id)。每个级别最好有多个 DTO:API、业务逻辑、数据库。

【讨论】:

  • 我该怎么做?在哪里创建这个字符串列?
  • 我到底要写什么?
  • @RenārsTreimanis 在您的业务逻辑中或将条目插入表中的任何位置:Id= DateTime.Now.ToShortDateString()+"1",其中 1 是您将放置的数字。你需要一些逻辑来持久化这个值。
  • 但是你想让那些date + number (1, 2,3) 数字字段自动递增吗?
  • 是的,这将是首选结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多