2012-10-07 1 views
1

Orchard CMS 용 모듈을 작성하고 있습니다.null 일대일 속성에서 ID를 할당하려고했습니다. ContentItemRecord - Orchard CMS

여러 테이블이 있습니다. Migrations.cs에서 :

  SchemaBuilder.CreateTable("CustomerPartRecord", table => table 
      .ContentPartRecord() 
      .Column<string>("FirstName", c => c.WithLength(50)) 
      .Column<string>("LastName", c => c.WithLength(50)) 
      .Column<string>("Title", c => c.WithLength(10)) 
      .Column<DateTime>("CreatedUtc") 
      ); 

     ContentDefinitionManager.AlterPartDefinition("CustomerPart", part => part 
      .Attachable(false) 
      ); 

     ContentDefinitionManager.AlterTypeDefinition("Customer", type => type 
      .WithPart("CustomerPart") 
      .WithPart("UserPart") 
      ); 
     return 6; 

을하지만 그것은 작동하지 않습니다 :

그것은 잘 작동 내가 주문을 추가 할 때

  SchemaBuilder.CreateTable("OrderPartRecord", t => t 
      .ContentPartRecord() 
      .Column<int>("CustomerId", c => c.NotNull()) 
      .Column<DateTime>("CreatedAt", c => c.NotNull()) 
      .Column<decimal>("SubTotal", c => c.NotNull()) 
      .Column<string>("Status", c => c.WithLength(50).NotNull()) 
      ); 

     ContentDefinitionManager.AlterPartDefinition("OrderPart", part => part 
      .Attachable(false) 
     ); 

     ContentDefinitionManager.AlterTypeDefinition("Order", type => type 
      .WithPart("OrderPart") 
     ); 

오류가있다. 오류 : 이 null 일대일 속성에서 ID를 할당하려고 시도했습니다. ContentItemRecord 무엇이 잘못 되었습니까?

UPD :

처리기 :

public class OrderPartHandler : ContentHandler 
{ 
    public OrderPartHandler(IRepository<OrderPartRecord> repository) 
    { 
     Filters.Add(StorageFilter.For(repository)); 
    } 
} 

그리고 만드는 주문 :

내가 짐작했듯이
_orderRepository.Create(order); 
+1

언제 오류가 발생 했습니까? 주문을 추가하기 위해 IRepository를 사용하려고 했습니까? :) – wooncherk

+0

예, 사용합니다. 내 게시물을 업데이트하여 표시했습니다. –

답변

2

, 당신은 결과 저장소를 사용하여 주문을 만들려고 충분한주의를 기울이지 않으면 오류. 이 문제를 해결하려면 Order가 실제로 컨텐트 아이템이기 때문에 ContentManager를 사용하여 주문을 만듭니다.

추 신 :이 오류는 nHibernate와 관련이 있으며, 특히 엔디 테이트 간의 연관성과 관련됩니다. 자세한 내용은 다음 링크를 참조하십시오. Hibernate : attempted to assign id from null one-to-one property: employee

+0

누군가 ContentManager를 실제로 문서화하면 좋을 것입니다. 이를 이해하는 유일한 방법은 코드 스 니펫을 찾거나 코드를 파헤 치는 것입니다. –

6

부품 레코드에 대해 직접 레코드를 만들어야합니다. 컨텐트 항목없이 작성하려는 경우 컨텐트 파트 레코드가 아닌 일반 레코드로 만드십시오. 컨텐트 부분 레코드는 컨텐트 항목과 항상 연관되어야하며 저장소가 아닌 컨텐트 관리자를 통해 생성되어야합니다.

+0

고마움, 당신의 대답은 내게 실제로 많은 것을 명확히했습니다. –

+0

감사합니다. 그러나 나는 당신이 아주 좋지 않다는 것을 지적하고 싶습니다. 그래서 사람들이 투표를하면 최고 내용이 최고로 올라갑니다. 좋은 습관을 북돋우기 위해 구걸하는 것이 아닙니다. 나는 나 자신을 위해 표를 거의 필요로하지 않는다. –

+0

글쎄, 미안하지만, 내가 무례하다고 인정한다. 그러나 "투표 업"의견도 그렇게 느낍니다. 이미 투표했으면. Peace :) –

관련 문제