2014-04-29 44 views
1

我是一種新鮮的果園。我想在這裏實現的是我的實體之間的關係。所以基本上ApiConfigurationRecord應該有一個ApiParameterRecord列表。但是當我執行這個動作時,沒有任何東西正在被保存。此外,如果它保存,希望它會自動延遲加載它的孩子。順便說一句,我試圖以非內容的方式(沒有ContentPart或ContentPartRecord)。果園非內容一對多關係

好吧這是我的代碼:

public class ApiConfigurationRecord 
{ 
    public ApiConfigurationRecord() 
    { 
     if (Parameters == null) 
      Parameters = new List<ApiParameterRecord>(); 
    } 

    public virtual int Id { get; set; } 

    public virtual string Name { get; set; } 

    public virtual string Description { get; set; } 

    public virtual IList<ApiParameterRecord> Parameters { get; set; } 
} 

public class ApiParameterRecord 
{ 
    public virtual int Id { get; set; } 

    public virtual string Name { get; set; } 
} 

public class Migrations : DataMigrationImpl 
{ 
    public int Create() 
    { 
     SchemaBuilder.CreateTable("ApiConfigurationRecord", table => table 
      .Column<int>("Id", column => column.PrimaryKey().Identity()) 
      .Column<string>("Name", column=> column.NotNull()) 
      .Column<string>("Description", column => column.WithLength(500)) 
      ); 

     SchemaBuilder.CreateTable("ApiParameterRecord", table => table 
      .Column<int>("Id", column => column.PrimaryKey().Identity()) 
      .Column<int>("ApiConfigurationRecord_Id") 
      .Column<string>("Name", column => column.NotNull()) 
      ); 

     return 1; 
    } 
} 

我的控制器動作:

public ActionResult TestInsert() 
    { 

     var record = new ApiConfigurationRecord() { Name = "Test 1", Description = "Some descripton" }; 
     record.Parameters.Add(new ApiParameterRecord() { Name = "Param1" }); 
     this.ApiConfigurationRepository.Create(record); 

     return Content("Inserted"); 
    } 

回答

1

實際上你需要連接兩個項目。

public class ApiParameterRecord 
{ 
    public virtual int Id { get; set; } 

    public virtual string Name { get; set; } 

    public virtual ApiConfigurationRecord ApiConfigurationRecord { get; set; } 
} 

至於創建,我不會認爲它會自動創建子項,但我不知道。試試這個:

var record = new ApiConfigurationRecord() { Name = "Test 1", Description = "Some descripton" }; 
this.ApiConfigurationRepository.Create(record); 
var child1 = new ApiParameterRecord() { Name = "Param1", ApiConfigurationRecord = record }; 
ApiParameterRepository.Create(child1); 
+0

謝謝,它的工作。順便說一下,出現了一些新問題。每當我嘗試調用TestInsert()動作時,我第一次調用數據被插入,但在此之後,它沒有插入。我必須等待一段時間,再次運行,它再次運行良好。看起來像第二次,系統從緩存或其他東西加載頁面。你知道這是爲什麼嗎? – dausdashsan

+0

你只在這裏顯示1-1關係。您需要創建一個表來適應您的IList ErMasca

+0

@dausdashsan嘗試在模塊部分 – Hazza