c# - 首先使用 ASP.net EF 5 代码创建表时是否可以为列设置默认值?

标签 c# asp.net sql-server asp.net-mvc entity-framework

我正在使用 EF 5 代码优先实践创建数据库,但无法弄清楚如何在列上设置默认值(约束)。

如果你看看我下面的代码;每当添加新用户时,我需要将 IsAdmin 列默认为 0/false。目前我正在做的是首先使用代码创建数据库。然后打开 sql server management studio 并进入表的设计模式,并为 IsAdmin 列输入默认值 (0)。

这可以从 Entity Framework 完成吗?

这是我得到的。

//Create CODE FIRST Database Tables.
public class MyDB : DbContext
{
    public DbSet<Users> Users { get; set; }
}

//Users Table in SQL Server
public class Users
{
    [Key]
    public int UserID { get; set; }

    [Required, Column(TypeName = "varchar")]
    public string UserName { get; set; }

    [Required, Column(TypeName = "varchar")]
    public string Password { get; set; }      

    [Required]
    public bool IsAdmin { get; set; }
}

最佳答案

我认为你只需添加

[DatabaseGenerated(DatabaseGenerationOption.Computed)]      
public DateTime DateCreated { get; set; }

或在映射中

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
            modelBuilder.Entity<User>()
                    .Property(p => p.CreatedDate )
                    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
    }

据我所知,除这些数据注释外,还没有实现任何功能,但您应该能够手动更新表格...我发现 this example here:

protected void Application_Start()
{
    Database.SetInitializer(new MyDatabaseInitializer());
}

public class MyDatabaseInitializer : DropCreateDatabaseIfModelChanges<DbContext>
{
     protected override void Seed(DbContext context)
     {
        context.Database
             .ExecuteSqlCommand(string.Format("ALTER TABLE {0} ADD DEFAULT ({1}) FOR [{2}]", "Users", "getdate()", "CreatedDate"));
     }
}

关于c# - 首先使用 ASP.net EF 5 代码创建表时是否可以为列设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19170907/

相关文章:

c# - 是否有可用于 .NET 的类似数据库的持久层?

c# - 在一个服务的方法中运行多个任务

c# - 将表从一个 SQL Server 高效更新到另一个相同的表结构

asp.net - 从一个区域的 Action 重定向到 "root"区域中的 Action ?

ASP.NET -> WCF 服务需要 Windows 身份验证

c# - 将多个 csv 文件作为单个数据集加载的最佳方法

c# - 密码加密-c#

c# - 我可以使用 Azure api 管理进行 gRPC 通信吗?

sql-server - ASP Classic SQL Server 以 XML 格式从数据库返回结果

sql-server - 批处理文件到 "Script"数据库