2017-03-17 84 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