2011-11-13 2 views
1

내 ID로 Guid 빗을 사용하고 싶습니다. 내 테이블을 유지하지 못하게하는 클래스에 EntityWithTypedId 인터페이스를 추가했습니다. 즉 NSH Profession을 사용하면 SaveOrUpdate 메서드가 호출되지 않음을 알 수 있습니다. Entity 인터페이스를 사용하면 프로파일 러에서 볼 수 있습니다.EntityWithTypedId의 샤프 아키텍처 문제

[HttpPost] 
    [ActionName("Edit")] 
    public ActionResult EditPost(Application application) 
    { 
     var updateApplication = new Application(); 
     updateApplication.Created = DateTime.Now; 
     updateApplication.Modified = DateTime.Now; 
     _applicationQuery.Update(updateApplication); 
     return RedirectToAction("Index"); 
    } 

답변

0

public class Application : EntityWithTypedId<Guid> 
{ 
    public virtual string Name { get; set; } 
    public virtual string CreatedByUserName { get; set; } 
    public virtual string ModifiedByUserName { get; set; } 
    public virtual DateTime Created { get; set; } 
    public virtual DateTime Modified { get; set; } 
} 


public class ApplicationQuery : NHibernateQuery, IApplicationQuery 
{ 

    public void Update(Application application) 
    { 
     Session.SaveOrUpdate(application); 

    } 
} 

public class ApplicationMap : IAutoMappingOverride<Application> 
{ 
    public void Override(AutoMapping<Application> mapping) 
    { 
     mapping.Table("Application"); 
     mapping.Id(x => x.Id, "Id").GeneratedBy.GuidComb(); 
    } 
} 

컨트롤러 나는 다음에 내 매핑을 업데이트하여이 문제를 해결했습니다.

public void Override(AutoMapping<Application> mapping) 
     { 
      mapping.Table("Application"); 
      mapping.Id(x => x.Id, "Id").GeneratedBy.GuidComb().UnsavedValue(Guid.Empty); 

     } 

자세한 내용은 여기를 참조하십시오.

http://s274.codeinspot.com/q/1486941