【问题标题】:How do I set a default date using code first entity framework如何使用代码优先实体框架设置默认日期
【发布时间】:2012-09-01 01:31:09
【问题描述】:

我正在尝试使用实体框架和代码优先方法为最后一个日期 (DateAdded) 属性设置默认值。这是我的代码:

namespace BackOffice.Models
{
    public class UsersContext : DbContext
    {
        public UsersContext()
            //: base("DefaultConnection")
            : base("ProofPixDB")
        {
        }

        public DbSet<UserProfile> UserProfiles { get; set; }
    }

    [Table("UserProfile")]
    public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        public string UserName { get; set; }


        //public DateTime DOB { get; set; }
        [DataType(DataType.Date)]
        public DateTime? DOB { get; set; } //This allows null

        [Required]
        [DataType(DataType.Date)]
        public DateTime DateAdded { get; set; }

    }
}

【问题讨论】:

标签: c# entity-framework ef-code-first


【解决方案1】:

你可以在构造函数中设置它:

public class UserProfile()
{
   DateAdded = DateTime.Now;
}

【讨论】:

    【解决方案2】:

    我曾经在以下链接中处理过这个问题:

    setting default values

    基本上使用带有反射的“工厂”。

    【讨论】:

    • 这看起来很有希望,但当我阅读你的博客文章时,我不确定我会在哪里实际调用你的函数。你有我可以查看的样本吗?
    • 好吧,例如,在任何需要您类型的新实例的地方: UserProfil up = EntityTools.GetNewEntity();将生成一个新的 UserProfil 初始化实例。
    • 非常感谢!抱歉耽搁了。我最终在回发的控制器中添加了这个。
    【解决方案3】:

    我最终在回发时设置了这个,如下所示:

    // POST: /Account/Register
    
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                // Attempt to register the user
                try
                {
                    DateTime rightNow = DateTime.Now;
    
                    //WebSecurity.CreateUserAndAccount(model.UserName, model.Password); //too limited used CreateUserAndAccount method below
                    var extendedUserProperties = new { SubscriberId = subscriber.SubscriberId, Email = model.Email, DateAdded = rightNow };
                    WebSecurity.CreateUserAndAccount(model.UserName, model.Password, extendedUserProperties);
                    Roles.AddUserToRole(model.UserName, Request.Form["RoleName"]);
                    WebSecurity.Login(model.UserName, model.Password);
    
                    return RedirectToAction("Index", "Home");
                }
                catch (MembershipCreateUserException e)
                {
                    ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                }
            }
    
            // If we got this far, something failed, redisplay form
            return View(model);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多