2016-04-12 6 views
0

Что является лучшим решением для правильной записи моей базы данных: Я хочу сохранить эти данные в моем sqlite databse и экспортировать его в CSV, я сделал небольшой метод, но с этим процессом Я не могу получить PhotoEnt в моей EmailEntity.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

Прохладный. Также почему вы используете два параметра Id (IdGuid и Id)? Не удалось ли внешнему ключу в PhotoEntity указать свойство int Id объекта PhotoEntity? Я просто хочу убедиться, что я понимаю ваш сценарий, прежде чем я отправлю ответ. – pnavk

ответ

1

Итак, вот как я бы настроить ваши модели:

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; } 
} 

Обратите внимание, что я определяю операции каскадного в отношениях attribtues. Это непосредственно из документации SQLite-Extensions: https://bitbucket.org/twincoders/sqlite-net-extensions#markdown-header-cascade-operations

Теперь при сохранении/извлечение объектов необходимо использовать рекурсивные методы:

GetWithChildren 
InsertWithChildren 

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

Смежные вопросы