2015-09-15 106 views
0

我是實體框架的新手,並且努力保存對數據庫的簡單JSON響應。 我有一個JSON字符串,並使用json2csharp.com生成如下的實體類。據我看,我需要在數據庫中有ABC,AAA,BBB,CCC表。使用實體框架將json保存到數據庫

我與實體框架以爲我可以簡單的添加每個ABC列表,然後就去做的SaveChanges但顯然它不是簡單的:-(

any pointers to fix the code ? 

db.ABC.Add(listitem); 
db.SaveChanges(); 


public class ABC 
    { 
     public string id { get; set; } 
     public AAA aaa { get; set; } 
     public List<BBB> bbb { get; set; } 
    } 

public class AAA 
    { 
     public string id { get; set; } 
     public string bla { get; set; }  
     public string bla { get; set; }  
    } 

    public class BBB 
    { 
     public string id { get; set; } 
     public string bla { get; set; } 
     public string bla { get; set; } 
     public string bla { get; set; } 
     public List<CCC> images { get; set; } 
     public object errorDetails { get; set; } 
    } 

     public class CCC 
    { 
     public string id { get; set; } 
     public string bla { get; set; } 
     public string bla { get; set; } 
    } 

    public class RootObject : DbContext 
    { 
     public List<ABC> abc { get; set; } 
     public string status { get; set; } 
     public object errorDetails { get; set; } 
    } 


static void Main(string[] args) 
     { 
      try 
      { 
RootObject robj = JsonConvert.DeserializeObject<RootObject>(jsonstring); 
using (var db = new RootObject()) 
       { 
         foreach (ABC listitem in robj.ABC)       
         {        
          db.abc.Add(listitem); 
         } 

        db.SaveChanges(); 
       } 
      } 
     } 
+0

我得到「對象引用未設置爲對象的實例」。當我嘗試使用下面的代碼 (VAR分貝=新RootObject()){ 爲 (INT I = 0;我 SARK

回答

0

你必須完全改變你的RootObject類,它是未正確創建,爲EF的工作,並與您的數據庫映射,更好的閱讀http://www.entityframeworktutorial.net/code-first/entity-framework-code-first.aspx這個官方教程,並試圖自己重現。

您將獲得EF的理解和做出正確的RootObject :)

更新

爲您的代碼編輯的樣本。

public class ABC 
{ 
    public string id { get; set; } 

    //Navigation property 
    public virtual AAA aaa { get; set; } 

    //Collection navigation property 
    public virtual ICollection<BBB> bbbs { get; set; } 
} 

public class AAA 
{ 
    public string id { get; set; } 
    public string bla { get; set; } 
    public string bla2 { get; set; } 

    //Navigation property 
    public virtual ABC abc { get; set; } 
} 

public class BBB 
{ 
    public string id { get; set; } 
    public string bla { get; set; } 
    public string bla4 { get; set; } 
    public string bla3 { get; set; } 
    public object errorDetails { get; set; } 

    //Navigation property 
    public virtual ABC abc { get; set; } 

    //Collection navigation property 
    public virtual ICollection<CCC> cccs { get; set; } 
} 

public class CCC 
{ 
    public string id { get; set; } 
    public string bla { get; set; } 
    public string bla2 { get; set; } 

    //Navigation property 
    public virtual BBB bbb { get; set; } 
} 

public class RootObject : DbContext 
{ 
    public DbSet<ABC> abc { get; set; } 

    public DbSet<AAA> aaa { get; set; } 

    public DbSet<BBB> bbb { get; set; } 

    public DbSet<CCC> ccc { get; set; } 

    public string status { get; set; } 
    public object errorDetails { get; set; } 
} 
+0

感謝您的有用閱讀鏈接。你也可以指向RootObject類的1次修正嗎? – SARK

+0

我歡迎。 Yeap:**公開名單 abc {get;組; } **必須是** public DbSet abc {get;組; } **。你必須添加所有其他模型,你想他們作爲表格** DbSet yourModels {get;設置;} **和它們之間的連接等。 –

+0

感謝您的提示。我很困惑,如果它應該是數組或列表 - 列表或ABC []? – SARK

相關問題