2017-03-17 85 views
0

我得到了一個xamarain SQLite表(原生Android/PCL):Xamarin的SQLite使用LINQ

[Table("Customer")] 
    public class Customer 
    { 
     [PrimaryKey, AutoIncrement] 
     public int Id { get; set; } 
     public Address Address{ get; set; } 
    } 

「地址」 表示第二個表。

1)是否有可能當我打電話

connection.CreateTable<CustomerDto>(); 

因爲它依賴於自動創建的「地址」表?

2)是否有可能使用LINQ表達自動正確的「地址」映射到這個「客戶

回答

1

在我的.NET標準庫我使用的是:?

  • 」源碼網「: 」1.0.8「

  • 」的SQLite淨PCL「: 」1.3.1「

我一個pproach是爲所有表創建「初始狀態模型」,標記爲抽象(所以不存在任何人可以實例化它們的風險),只定義數據庫中必需的字段和主鍵(在我的情況下爲GUID),使用只能在開始時創建表格。修改數據結構後始終使用ALTER指令。 在另一個命名空間中,所有模型都是重複的,這次是使用getters/setter和其他實用程序,我將它們用作「真實模型」。

爲代表的關聯模型我使用的字段爲ID,另外一個爲模型(刷新必要時):

public int IdAddress { get; set; } 
[Ignore] 
public Address Address { get; set; } 

我不認爲sqlite的網可以做你的要求,因爲這是一個非常輕量級的orm,即使我可以選擇不要因爲我過去使用Hibernate的經驗而自動化太多。

https://github.com/praeclarum/sqlite-net

https://components.xamarin.com/view/sqlite-net

0

這聽起來像你應該看看使用實體框架,因爲這將允許您使用LINQ的SQLite。 Web上的標準庫(非Entity框架)非常輕便,並且沒有太多針對ORM的功能,例如您正在尋找的功能。

如果你正在尋找一個更輕量級的庫,你可以利用這一點,但它不會讓你寫LINQ表達式,而無需編寫自己的ORM: https://github.com/MelbourneDeveloper/SQLite.Net.Standard