Ответ 1
EF вообще не использует атрибут DefaultValue
= он не является частью модели, поэтому миграции не видят его. Вы можете предложить поддержку этой аннотации на Data UserVoice.
У меня есть класс, который выглядит так:
[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).
EF вообще не использует атрибут DefaultValue
= он не является частью модели, поэтому миграции не видят его. Вы можете предложить поддержку этой аннотации на Data UserVoice.
В дополнение к Ладиславу Комментарий. Что правильно. вы не можете сделать это в модели. ЕСЛИ вы хотите использовать миграции на основе кода. Т.е. с использованием базы данных добавления-миграции/обновления PM-команд PM, этот подход вводит в процесс сгенерированный класс. Тогда у вас могут быть значения по умолчанию. См. Классы, которые выводятся из 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" ));
}