gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:56:57 25 4
gpt4 key购买 nike

我正在使用 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/

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