如何实现DateTime实体属性以始终设置DateTime.Now

时间:2013-11-28 08:43:08

标签: c# entity-framework datetime properties

我已经阅读了一堆关于自动实现的属性,但我仍然不太明白。我有和实体:

 public class News
    {
        public int NewsId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        public DateTime Date { get; set; }
    }

现在我不希望用户每次创建News类型的新实体时都自己设置日期。我希望记录自动保存,并创建日期时间。考虑一下我建议只需将我的财产的set修改为:

public DateTime Date 
{
  get;
  set
  {
    Date = DateTime.Now;
  }
}

但是阅读有关该主题的内容,我看到标准方法是创建私有变量并在实现中使用它。这就是我有点迷失的地方。

private DateTime _date = null;
public DateTime Date
{ 

嗯,我不确定getter和setter实现。有一些类似于set { _date = DateTime.Now;}似乎是合理的,我不知道如何处理get部分,因为我希望从数据库中提取这些数据,所以像:get {return _date;} doesn't make much sense to me even though almost every example with auto implemented这样设置`返回私有变量。但我认为,如果财产是一个实体,这没有多大意义。

3 个答案:

答案 0 :(得分:5)

返回当前日期的一些方法:

 public DateTime Date { get { return DateTime.Now; } }

 public class News
 {
    public News()
    {
       Date = DateTime.Now;
    }
    public DateTime Date { get; private set; }
 }

第一个将始终返回当前日期/时间,即使该实例是在一段时间之前创建的。第二个将返回实例创建的日期/时间。两者都阻止用户设置日期值。

答案 1 :(得分:3)

你可以在你的类中添加一个构造函数,然后在那里初始化你的属性。

public class News
{

   // properties goes here

   public News()
   {
       Date=DateTime.Now;
   }

}

更好的构造函数将是以下

public News(int newsId, string title, string content)
{
    NewsId=newsId;
    Title=title;
    Content=content;
    Date=DateTime.Now;
}

这样你就可以在一行代码中创建一个News类型的对象。

News news = new News(1,"title1","whatever");

答案 2 :(得分:1)

请勿触摸吸气器和安装器!它们是从模板自动生成的,每隔一段时间就会被覆盖。相反,正如您可能已经注意到生成的实体被部分声明,创建一个局部类并在那里声明一个构造函数,将构造函数的_date或Date设置为DateTime.Now构造(只是如你所愿)。

public partial class News
{
  public News()
  {
    this.Date = DateTime.Now;
  }
}