【问题标题】:Working with SQLite on Windows Phone 8.1 - Do I need an ORM?在 Windows Phone 8.1 上使用 SQLite - 我需要 ORM 吗?
【发布时间】:2014-10-31 08:52:07
【问题描述】:

我正在开发一个 Windows Phone 8.1 应用程序并需要使用数据库,直到有人问我使用的是什么 ORM,我才知道这不是问题。

所以我从http://sqlite.org 下载并安装了 SQLite.net 库并将其添加到我的项目中,我还添加了 nuget 包,这解决了我遇到的错误。

现在我已经创建了与我的数据库以及基于我的模型的表的连接。我的问题是,ORM 是从哪里来的?我没有做哪些我需要做的事情?

我的数据库设计得很简单,只有两个表。我需要它的原因是因为我以后需要使用 MS Office API 导出数据。

请帮忙。

【问题讨论】:

    标签: sqlite orm windows-phone-8.1 windows-phone


    【解决方案1】:

    对象关系映射 (ORM) – 允许您从数据库中 CRUD 对象而无需编写 SQL 语句的库。 SQLite.NET 库是一个非常精简的 ORM。 看来你做对了,但你可以按照以下的分步说明进行检查:

    1. 向您的解决方案添加一个新项目,例如 YourProject.SQLite,或者只是在现有的适当项目之一中创建一个子文件夹。
    2. 通过 nuget 添加 sqlite-net 依赖项。
    3. 安装SQLite for Windows Phone 扩展。
    4. 现在您可以:
      • 创建连接_connection = new SQLiteAsyncConnection(DatabaseName);
      • 创建数据库等待_connection.CreateTablesAsync(typeof(SyncFile), typeof(TransferFile));
      • CRUD 对象 await _connection.InsertAsync(entity); _connection.UpdateAsync(entity);

    我建议您也使用通用存储库模式。它可能看起来像:

    public class Repository<TEntity> : IRepository<TEntity> where TEntity : class, new()
    {
        private readonly SQLiteAsyncConnection _connection;
        public Repository(SQLiteAsyncConnection connection)
        {
            _connection = connection;
        }
        public async Task<TEntity> GetByIdAsync(object id)
        {
            return await _connection.FindAsync<TEntity>(id);
        }
        public async Task<IReadOnlyCollection<TEntity>> GetAllAsync()
        {
            return await _connection.Table<TEntity>().ToListAsync();
        }
        public async Task<IReadOnlyCollection<TEntity>> GetWhereAsync(Expression<Func<TEntity, bool>> predicate)
        {
            return await _connection.Table<TEntity>().Where(predicate).ToListAsync();
        }
        public async Task AddAsync(TEntity entity)
        {
            await _connection.InsertAsync(entity);
        }
        public async Task UpdateAsync(TEntity entity)
        {
            await _connection.UpdateAsync(entity);
        }
        public async Task DeleteAsync(TEntity entity)
        {
            await _connection.DeleteAsync(entity);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-08-27
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      相关资源
      最近更新 更多