2012-06-08 5 views
2

POCO와 Fluent NHibernate를 사용하여 User와 같은 객체를 가져 와서 다양한 속성을 부여 할 수 있어야합니다. 나는이 객체들이 공통 속성이 아닌 그들의 속성에 집중할 수 있기를 바랍니다. 현재 AuditableEntity를 가지고 있기 때문에 CreatedDateTime 및 ModifiedDateTime과 같은 Audited 속성을 가질 수있는 권한을 Entity에 부여 할 수 있지만 모든 객체에 대해 ID를 구현해야하는 필요성을 없애기 위해 ID를 구현해야합니다. 다른 기본 객체의 일부가 될 수 있으므로이 객체에는 Guid Id가 있고이 객체에는 int id가 있고이 객체에는 ID가 없다고 말할 수 있습니다.Fluent NHibernate 엔티티 꾸미기

User.cs

namespace ZeroBase.Domain.Entities 
{ 
public class User : AuditableEntity<User> 
{ 
    public virtual Guid Id { get; set; } 
    public virtual string Username { get; set; } 
    public virtual string Password { get; set; } 
    public virtual string FirstName { get; set; } 
    public virtual string LastName { get; set; } 
    public virtual string EmailAddress { get; set; } 
    public virtual IEnumerable<Comment> Comments { get; set; } 
} 
} 

내 UserMap는 다음과 같습니다 : 현재 내 사용자 개체는 다음과 같습니다

UserMap.cs

namespace ZeroBase.Infrastructure.Data 
{ 
public class UserMap : AuditMap<User> 
{ 
    public UserMap() 
    { 
     Id(x => x.Id) 
      .Column("Id") 
      .GeneratedBy.Guid(); 
     Map(x => x.Username); 
     Map(x => x.Password); 
     Map(x => x.FirstName); 
     Map(x => x.LastName); 
     Map(x => x.EmailAddress); 
     HasMany(x => x.Comments); 
     Table("Users"); 
    } 
} 
} 

은 처리 거기다 일종의 일반 기본 클래스의 ID 생성 및 개체가 감사 할 수 상속 할 수있는 별도의 클래스가 여전히 있습니까?

답변

2

ID가없는 클래스에 AuditableEntity을 사용하고 있습니까? Entity은 클래스에 ID가 있음을 의미합니다. 이것을 바탕으로 AuditableEntity에 Id 속성을 추가 할 수 있다고합니다.

값 개체와 같은 ID없이 클래스에 사용하는 경우 다른 기본 클래스를 만듭니다. 이런 식으로 말이 되겠습니까?

class Entity { 
    Guid Id { get; set; } 

    public Entity() { 
     Id = Guid.NewGuid(); 
    } 
} 

interface IAuditable<T> { 
    DateTime CreatedAt {get; set; } 
    // ... 
} 

class AuditableEntity<T> : Entity, IAuditable<T> { 
    DateTime CreatedAt { get; set; } 
} 

class AuditableValueObject<T> : IAuditable<T> { 
    DateTime CreatedAt { get; set; } 
} 

// Class that has both an identity and is auditable 
class User : AuditableEntity<User> { 
    // .. 
} 

// Class without an identity but auditable 
class Money : AuditableValueObject<Money> { 
    // .. 
} 

// Class with an identity but not auditable 
class Customer : Entity { 
    // .. 
} 


참고 : 엔티티 객체 값 등 Domain Driven Design (DDD)의 측면이다.

+0

그랬습니다! 도와 주셔서 감사합니다! –

관련 문제