2016-04-12 11 views
0

私のデータベースを正しく保存する最適な解決策は何ですか: 私はこのデータを自分のsqliteデータベースに保存してCSVでエクスポートしたいのですが、私はEmailEntityでPhotoEntを取得できません。SQLite.netは、外部キーを持つ挿入を行います

PhotoEntity:

public class PhotoEntity : EntityBase 
{ 
    [PrimaryKey, AutoIncrement] 
    public override int Id { get; set; } 

    public string IdGuid { get; set; } 

    public string PhotoDate { get; set; } 

    public string Image { get; set; } 

    [OneToMany] 
    public List<EmailEntity> Emails { get; set; } 
} 

EmailEntity:

public class EmailEntity : EntityBase 
{ 
    [PrimaryKey, AutoIncrement] 
    public override int Id { get; set; } 

    [ForeignKey(typeof (PhotoEntity))] 
    public string IdGuid { get; set; } 

    public string Email { get; set; } 

    [ManyToOne] 
    public PhotoEntity PhotoEnt { get; set; } 
} 

そして、私が保存されたときに、私はこれを行う:

private void DoInsertBddCommand() 
    { 
     var guidForId = Guid.NewGuid().ToString(); 
     var dateTime = DateTime.Now.ToString(); 

     var photoEntity = new PhotoEntity 
     { 
      IdGuid = guidForId, 
      Image = _imageName, 
      PhotoDate = dateTime 
     }; 
     new PhotoBusiness().Save(photoEntity); 

     foreach (var item in Emails) 
     { 
      var emailEntity = new EmailEntity 
      { 
       IdGuid = guidForId, 
       Email = item, 
       PhotoEnt = photoEntity 
      }; 

      new EmailBusiness().Save(emailEntity); 
     } 
    } 

それはSQLite.netで初めてです、どんな提案を?

はそうここにある、あなたは

+0

はあなたがSqlite.Net-拡張機能を使用していますか? – pnavk

+0

はい!私のナゲット:http://i.imgur.com/ACgKVnH.png –

+0

クール。また、なぜ2つのIdパラメータ(IdGuidとId)を使用していますか? PhotoEntityへの外部キーが、PhotoEntityオブジェクトのint Idプロパティを指すだけではありませんか?私は答えを投稿する前にあなたのシナリオを理解していることを確認したいだけです。 – pnavk

答えて

1

オーケーありがとうどのように私はあなたのモデルの設定になります。私は関係attribtuesでカスケード操作を定義

public class PhotoEntity : EntityBase 
{ 
    [PrimaryKey, AutoIncrement] 
    public override int Id { get; set; } 

    public string PhotoDate { get; set; } 

    public string Image { get; set; } 

    [OneToMany(CascadeOperations = CascadeOperation.All)] 
    public List<EmailEntity> Emails { get; set; } 
} 

public class EmailEntity : EntityBase 
{ 
    [PrimaryKey, AutoIncrement] 
    public override int Id { get; set; } 

    [ForeignKey(typeof (PhotoEntity))] 
    public int PhotoEntityId { get; set; } 

    public string Email { get; set; } 

    [ManyToOne(CascadeOperations = CascadeOperation.All)] 
    public PhotoEntity PhotoEnt { get; set; } 
} 

注意してください。これは、SQLiteの-拡張機能のドキュメントから直接です:https://bitbucket.org/twincoders/sqlite-net-extensions#markdown-header-cascade-operations

今、あなたが保存するときに/取得あなたは、再帰的なメソッドを使用する必要があるオブジェクト:

GetWithChildren 
InsertWithChildren 

https://bitbucket.org/twincoders/sqlite-net-extensions#markdown-header-cascade-read

関連する問題