我使用System.Data.SQLite.SQLiteFunction在C#中创建了一些自定义SQLite函数.当使用SQLiteDataAdapter执行查询时,它工作得很好,但它不起作用,但是,当使用Linq to SQL时,我会收到错误,指出该函数不存在.
我想底线是,如何让Custom SQLiteFunctions在Linq to SQL中工作?要么让它们加载它们应该的方式,要么通过修改SQLite.Net的源代码使它们成为dll的一部分?
注意:我理解实体框架是首选,这是遗留应用程序,我没有选项来更改它.我尝试手动将函数绑定到DataContext.Connection,没有骰子.
关于尝试修改System.Data.SQLite的背景:我尝试下载源代码,我可以从源代码成功构建,但源代码对我来说有点令人费解.
这样做的目的是尝试将我的自定义函数构建到System.Data.SQLite.dll中,而不是依赖于通过反射自动加载.
我正在尝试创建一个基本抽象类和子类来抽象对后端数据库的访问。一个子类是 SQLAlchemy,另一个子类是 MongoDB 或其他 nosql。下面是一个非常简单的例子。在基类中,我需要为每种类型的对象提供一个 deleteObject,因为 noSQL 实现将需要这个,但是,任何使用 SQLAlchemy 的内容都只需要一个删除方法。我想通过为抽象基础中的每种类型的对象提供以下方法来节省自己的打字时间。如果这有效,我就不必为 SQLAlchemy 子类中的每个对象类型定义 deleteObject,因为基本抽象只会将其传递给私有 __delete 函数。不幸的是,当我调用deleteUser时,它确实会转到抽象基函数,但对self.__delete(user)的调用会转到抽象函数,即使子类定义了此函数。当子类定义该函数的实现时,有没有办法确保抽象实现中的函数调用转到子类?
@abc.abstractmethod
def deleteUser(self, user):
"""Delete an user from the backend database"""
print('abstractmethod')
self.__delete(user)
@abc.abstractmethod
def __delete(self, object):
print('dont go here')
Run Code Online (Sandbox Code Playgroud)