2015-03-12 3 views
0

Моя проблема в том, что если я хочу создать две таблицы с отношением между этими двумя.Sqlite.net не создает атрибуты расширения Sqlite.net

public class Order : BusinessEntity 
{ 
    [PrimaryKey] 
    public Guid Id{ get; set; } 

    [MaxLength(20)] 
    public string Title{ get; set;} 

    [MaxLength(20)] 
    public string Location{ get; set; } 


    public DateTime OrderGenerated{ get; set; } 

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

[Table("OrderPos")] 
public class OrderPos : BusinessEntity 
{ 
    [PrimaryKey] 
    public Guid Id{ get; set; } 

    [ForeignKey(typeof(Order)), ManyToOne] 
    public Guid OrderId{ get; set; } 

    [MaxLength(20)] 
    public string MaterialNr{ get; set; } 

    [MaxLength(10)] 
    public string State{ get; set; } 

    public int Amount{ get; set; } 

} 

В OrderPos стол был создан без ForeignKey и поэтому я получаю исключение в методе InsertOrUpdateAllWithChildren.

Должен ли я использовать другой производный класс SqliteConnection?

С наилучшими пожеланиями, Томас

ответ

1

Вам не нужно атрибут ManyToOne в иностранной кет, можно использовать, только если вы хотите загрузить обратную связь, то есть объект заказа.

Заменить это:

[ForeignKey(typeof(Order)), ManyToOne] 
public Guid OrderId{ get; set; } 

С этим:

[ForeignKey(typeof(Order))] 
public Guid OrderId{ get; set; } 

Кроме того, я не думаю, что Sqlite поддерживает Guids (или он будет относиться как текст и производительность будет плохо), попробуйте использовать Int и AutoIncrement.

В противном случае это выглядит нормально.

Ссылка: https://bitbucket.org/twincoders/sqlite-net-extensions

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