12

私は Entity Framework CTP4 で Code First を検討しており、ModelBuilder を使用してテーブルの列を作成できます。ModelBuilder またはその他のメカニズムを使用して、データベース内の列のデフォルト値を設定する方法はありますか?

ありがとう!

4

4 に答える 4

39

コンストラクターを使用してデフォルト値を設定しています。私を失敗させたことはありません

public class Activity
{
    [Required]
    public DateTime AddedDate { get; set; }

    public Activity()
    {
        AddedDate = DateTime.Now;
    }
}
于 2011-02-17T17:47:34.357 に答える
4

移行用に生成されたコードでは、列のデフォルト値を指定できます。

AddColumn("users", "ReceiveSummaryEmail", c => c.Boolean(nullable: false, defaultValue: true));
于 2013-05-03T14:03:31.900 に答える
2

private settersこれは私のやり方で、コンストラクターを介してではなく、作成メソッドで重要なプロパティを設定します

モデル

public class User
{
    public static User Create(Action<User> init)
    {
        var user = new User();
        user.Guid = Guid.NewGuid();
        user.Since = DateTime.Now;
        init(user);
        return user;
    }

    public int UserID { get; set; }

    public virtual ICollection<Role> Roles { get; set; }
    public virtual ICollection<Widget> Widgets { get; set; }

    [StringLength(50), Required]
    public string Name { get; set; }
    [EmailAddress, Required]
    public string Email { get; set; }
    [StringLength(255), Required]
    public string Password { get; set; }
    [StringLength(16), Required]
    public string Salt { get; set; }

    public DateTime Since { get; private set; }
    public Guid Guid { get; private set; }
}

新規ユーザーの作成

context.Users.Add(User.Create(c=>
{
    c.Name = "User";
    c.Email = "some@one.com";
    c.Salt = salt;
    c.Password = "mypass";
    c.Roles = new List<Role> { adminRole, userRole };
}));
于 2012-05-30T20:25:58.603 に答える
2

テキストエディタ/アプリケーションを介して手動で編集する以外にデフォルト値を追加する方法が見つかりませんでしたこれはEntity Frameworkのバグです...

于 2010-10-27T20:43:35.007 に答える