【问题标题】:Xamarin SQLite using LINQ使用 LINQ 的 Xamarin SQLite
【发布时间】:2017-03-17 13:18:39
【问题描述】:

我在 xamarain (native android / pcl) 中有一个 sqlite 表:

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

“地址”表示第二个表。

1)是否可以在我调用时自动创建“地址”表

connection.CreateTable<CustomerDto>();

因为它是依赖?

2) 是否可以使用 LINQ 表达式自动将正确的“地址”映射到此“客户”?

【问题讨论】:

    标签: c# android linq sqlite xamarin


    【解决方案1】:

    在我正在使用的 .NET Standard 库中:

    • “sqlite-net”:“1.0.8”

    • “sqlite-net-pcl”:“1.3.1”

    我的方法是创建所有表的“初始状态模型”,标记为抽象的(因此没有人可以实例化它们的风险),只定义数据库中必要的字段和主键(我的 GUID case),仅用于开始创建表。始终使用 ALTER 指令对数据结构进行修改。 在另一个命名空间中复制了所有模型,这次是 getter/setter 和其他实用程序,我将它们用作“真实模型”。

    为了表示链接模型,我使用一个字段作为 Id,另一个作为模型(必要时刷新):

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

    我不认为 sqlite-net 可以满足您的要求,因为它是一个非常轻量级的 orm,即使它可以,由于我过去使用 Hibernate 的经验,我更喜欢不要自动化太多。

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

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

    【讨论】:

      【解决方案2】:

      听起来您应该考虑使用实体框架,因为这将允许您将 LINQ 与 SQLite 一起使用。 Web 上的标准库(不是 Entity 框架)非常轻量级,对于您正在寻找的类似 ORM 的功能没有太多功能。

      如果您正在寻找一个更轻量级的库,您可以使用它,但它不允许您在不编写自己的 ORM 的情况下编写 LINQ 表达式: https://github.com/MelbourneDeveloper/SQLite.Net.Standard

      【讨论】:

        猜你喜欢
        • 2021-06-12
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多