首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LiteDB的实体框架数据提供程序

LiteDB的实体框架数据提供程序
EN

Stack Overflow用户
提问于 2020-02-26 19:18:00
回答 1查看 2.6K关注 0票数 4

我希望我的实体框架Dbcontext类能够处理不同的-2数据库。它在使用各自的数据提供程序的Server、MySql、SQLite上运行良好。但是无法为LiteDB (No).Is获取任何数据提供程序,也没有关于使用LiteDB的实体框架的文章或示例代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-12 16:29:56

你的问题非常相关。LiteDB有一个非常类似于EntityFramework的API。按照我的想法,我不认为有必要在LiteDB中使用EF。但这只是我的想法。在回答您的问题时,仍然没有实现兼容性。附件是问题链接。

您是否计划支持EntityFramework #1198 https://github.com/mbdavid/LiteDB/issues/1198

您可以通过实现公共数据库接口来解决这个问题。

如下所示:

代码语言:javascript
复制
public interface IDatabaseService<TEntity>
        where TEntity : Entity, new()
{
    void Insert(TEntity entity);
}

LiteDB (这个类可以是一个抽象类,以确保您不会忘记server数据库而实例化):

代码语言:javascript
复制
public class LiteDBService<TEntity> : IDatabaseService<TEntity>
        where TEntity : Entity, new()
{
    private string _stringConnection;
    private LiteDatabase _db;
    protected LiteCollection<TEntity> _collection;

    public DatabaseService()
    {
        _stringConnection = string.Format("filename={0};journal=false", DependencyService.Get<IFileService>().GetLocalFilePath("LiteDB.db"));

        _db = new LiteDatabase(_stringConnection);
        _collection = _db.GetCollection<TEntity>();
    }

    public void Insert(TEntity entity)
    {
        _collection.Insert(entity);
    }
}

SqlServer:

代码语言:javascript
复制
public class SQLServerService <TEntity> : LiteDBService<TEntity>, IDatabaseService<TEntity>
            where TEntity : Entity, new()
{
    private readonly MyContext _context;

    public SQLServerService(MyContext context)
    {
        _context = context;
    }

    public void Insert(TEntity entity)
    {
        _context.Set<TEntity>.Add(entity);
        _context.SaveChanges();

        base.Insert(entity);
    }
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60421019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档