2010-10-27 30 views
12

Tôi đã xem xét mã đầu tiên với khung thực thể CTP4 và bạn có thể sử dụng ModelBuilder để xây dựng các cột trong bảng của mình. Có cách nào để thiết lập giá trị mặc định cho một cột trong cơ sở dữ liệu bằng cách sử dụng ModelBuilder hoặc một số cơ chế khác không?Mã khung thực thể Mã giá trị mặc định CTP4 đầu tiên?

Cảm ơn bạn!

+0

[gợi ý liên quan] (https://data.uservoice.com/forums/72025-entity-framework-feature - đề xuất/đề xuất/2929682-hỗ trợ-cơ sở dữ liệu-giá trị mặc định-trong-mã-đầu tiên). – tne

Trả lời

2

không thể tìm thấy một cách để thêm giá trị mặc định khác hơn manualy chỉnh sửa qua soạn thảo văn bản/ứng dụng Đây là một lỗi trong khung Entity ...

+0

Có cách nào để đặt giá trị mặc định nhưng nó không hoạt động, một lỗi? Hoặc là nó chỉ thiếu tính năng đó hoàn toàn trong phiên bản hiện tại? – Lukasz

+3

Thực tế là thiếu tính năng đó là lỗi ... – Tor

+0

Tính năng bị thiếu sẽ không đủ điều kiện làm lỗi. –

36

Tôi đang sử dụng các nhà xây dựng để thiết lập các giá trị mặc định. Không bao giờ thất bại tôi

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

    public Activity() 
    { 
     AddedDate = DateTime.Now; 
    } 
} 
+0

Câu trả lời này không nhận được đủ tình yêu. – Kjensen

+1

Chỉ có vấn đề là giá trị mặc định DB hiệu quả hơn. –

+0

ofcourse, nhưng cho đến khi nó được phát hành trong bản phát hành tiếp theo của EF, sẽ thực hiện thủ thuật – Korayem

2

Đây là cách của tôi, thiết lập các thuộc quan trọng với private setters trong một phương pháp sáng tạo thay vì thông qua các nhà xây dựng

Mẫu

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

Tạo người dùng mới

context.Users.Add(User.Create(c=> 
{ 
    c.Name = "User"; 
    c.Email = "[email protected]"; 
    c.Salt = salt; 
    c.Password = "mypass"; 
    c.Roles = new List<Role> { adminRole, userRole }; 
})); 
4

Trong các mã được tạo cho một sự chuyển đổi, bạn có thể chỉ định một giá trị mặc định cho một cột:

AddColumn("users", "ReceiveSummaryEmail", c => c.Boolean(nullable: false, defaultValue: true)); 
Các vấn đề liên quan