CSharp - Entity Framework 迁移不包括默认值数据注释( EF5RC )

  显示原文与译文双语对照的内容
0 0

我有一个类似这样的类:


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

 [Required]
 [DefaultValue(true)]
 public bool Enabled { get; set; }
}

在创建迁移以包括此类时,我得到以下信息:


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");
 }
}

我希望 Enabled 行看起来像这样:


Enabled = c.Boolean(nullable: false, defaultValue: true),

当然我可以自己做这个,但是我只是问一下是否有一种方法可以自动完成 Entity Framework 。

我正在使用最新的Entity Framework 5 RC (5.0.0-rc.net40).

时间: 原作者:

0 0

EF根本不使用 DefaultValue 属性= 它不是模型的一部分,所以迁移不会看到它。 你可以在数据 UserVoice 上提出这里注释的支持。

原作者:
0 0

作为Ladislav的附加评论。 你不能在模型中这么做。 如果你想使用基于代码的迁移。 IE 使用 PM commandlet添加迁移/更新数据库,然后这个方法将生成的类引入到流程中。 那么你就可以。 查看从DBMigrations派生的类。 请参见 http://msdn.microsoft.com/en-us/library/system.data.entity.migrations.dbmigration.addcolumn%28v=vs.103%29.aspx 你可以指定列生成器Lamda表达式。 这允许默认值。


namespace MigrationsDemo.Migrations
{
 using System;
 using System.Data.Entity.Migrations;

public partial class SomeClassThatisATable : DbMigration
{
 public override void Up()
 {
 AddColumn("MyTable","MyColumn", c => c.String( defaultvalue:"Mydefault" ));
 }

原作者:
...