2010-12-02 85 views
1

我有一个名为User的域对象,UserCreateViewModel.Automapper用于从ViewModel到用户的映射。 一切工作正常。当映射完成我看到用户域对象在用户ID,CreatedOn和ModifiedOn值分别喜欢当域对象instainciated时从属性生成默认值

00000000-0000-0000-0000-000000000000 
1/1/0001 12:00:00 AM 
1/1/0001 12:00:00 AM 

这些是默认值,当我instainciate用户对象。这会导致问题,因为我的用户对象无法从属性获取创建Guid和日期。

注:我不想硬编码超过默认值。

是否有一个干净的方法来解决这个问题,以便UserId,CreateOn和ModifedOn从属性生成值?

我你明白我的问题

UserCreateViewModel

public class UserCreateViewModel 
{ 
    public string UserName { get; set; } 
    public string Password { get; set; } 
} 

用户

private Guid? _guid; 
public Guid? UserId 
{ 
    get 
    { 
     return (_guid.HasValue) ? _guid.Value : Guid.NewGuid(); 
    } 
    set 
    { 
     _guid = value; 
    } 
} 

public string UserName { get; set; } 
public string Password { get; set; } 

private DateTime? _createdOn; 
public DateTime? CreatedOn 
{ 
    get 
    { 
     return (_createdOn.HasValue) ? _createdOn.Value : DateTime.Now; 
    } 
    set 
    { 
     _createdOn = value; 
    } 
} 

private DateTime? _modifiedOn; 
public DateTime? ModifiedOn 
{ 
    get 
    { 
     return (_modifiedOn.HasValue) ? _modifiedOn.Value : DateTime.Now; 
    } 
    set 
    { 
     _modifiedOn = value; 
    } 
} 

回答

1

看一看Automapper的BeforeMap和AfterMap功能。这些可能会帮助您自定义默认值的分配。

+0

是的,它的工作。多探索一下。 – Pirzada 2010-12-02 04:02:56