相关疑难解决方法(0)

实体框架6代码第一个默认值

是否有"优雅"的方式给特定属性一个默认值?

也许通过DataAnnotations,类似于:

[DefaultValue("true")]
public bool Active { get; set; }
Run Code Online (Sandbox Code Playgroud)

谢谢.

entity-framework default-value ef-code-first

187
推荐指数
9
解决办法
20万
查看次数

使用数据注释的mvc模型中的默认值

是否可以使用数据注释为int属性添加默认值

就像是

[DefaultValue=1]
public int MyId {get; set;}
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc

45
推荐指数
2
解决办法
7万
查看次数

如何使用Entity Framework 6 Code First设置默认值约束?

在旧版应用程序中,大多数字符串属性不能为null,并且需要具有默认值string.empty.

我知道可以通过迁移执行此操作,但我正在寻找使用流畅配置界面执行此操作的方法:

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Properties<string>().Configure(c =>
        {
            c.HasMaxLength(255);

            if (!c.ClrPropertyInfo.IsDefined(typeof (NullableAttribute), false))
            {
                c.IsRequired();
                // I want to set a default value (string.empty) here.
            }
    }
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,或者我注定要初始化实体构造函数中的所有字符串?

.net c# entity-framework ef-code-first entity-framework-6

31
推荐指数
3
解决办法
6万
查看次数

实体框架迁移不包括DefaultValue数据注释(EF5RC)

我有一个看起来像这样的课程:

[Table("Subscribers", Schema = "gligoran")]
public class Subscriber
{
    [Key]
    public string Email { get; set; }

    [Required]
    [DefaultValue(true)]
    public bool Enabled { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

创建迁移以包含此类时,我得到:

public partial class AddSubscriberClass : DbMigration
{
    public override void Up()
    {
        CreateTable(
            "gligoran.Subscribers",
            c => new
                {
                    Email = c.String(nullable: false, maxLength: 128),
                    Enabled = c.Boolean(nullable: false),
                })
            .PrimaryKey(t => t.Email);

    }

    public override void Down()
    {
        DropTable("gligoran.Subscribers");
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这Enabled条线看起来像这样:

Enabled = c.Boolean(nullable: false, defaultValue: true),
Run Code Online (Sandbox Code Playgroud)

当然我可以自己做,但我只想问是否有办法让Entity Framework自动完成. …

c# ef-migrations entity-framework-5

12
推荐指数
2
解决办法
1万
查看次数

创建实体框架模型时忽略数据库默认值

假设我的数据库中有下表:

CREATE TABLE [dbo].[Test]
(
    [Id]      INT            IDENTITY (1, 1) NOT NULL,
    [Active]  BIT            DEFAULT ((1)) NOT NULL,
)
Run Code Online (Sandbox Code Playgroud)

从此数据库创建 EF 模型时,映射到列的Active 位列的映射Boolean没有默认值(请参阅属性“默认值”): 属性视图 - 模型图

为什么实体框架会这样?为什么在创建模型时不会自动将数据库中定义的默认值应用到模型中?DB 声明默认值应该是1,我假设它true是模型中的默认值。我真的必须再次为模型中的所有列设置默认值吗?

我检查了intbit列的这种行为。


我做了更多调查,并尝试手动将“默认值”属性设置为Truetrue,并且两者都有效。

手动更改默认值

测试实体的自动生成的构造函数从

public Test()
{
}
Run Code Online (Sandbox Code Playgroud)

public Test()
{
    this.Active = true;
}
Run Code Online (Sandbox Code Playgroud)

所以默认值在 EF 中是可能的,但是在基于数据库优先生成模型时没有设置它们,至少在我的机器上没有。

所以,问题仍然存在:我是否真的必须再次为模型中的所有列设置默认值,即使它们已经在数据库中设置?

c# sql-server entity-framework ef-database-first entity-framework-6

4
推荐指数
1
解决办法
3340
查看次数