我有一个引用System.Data.SQLite(来自nuget)的C#类库.这是构建后我的bin文件夹的结构:
- MyProject.dll
- System.Data.SQLite.dll
- 86/SQLite.Interop.dll
- X64/SQLite.Interop.dll
System.Data.SQLite需要SQLite.Interop运行并在运行时找到正确的dll.但是,当我使用包含项目主输出的InstallShield生成安装程序时,不会复制x86和x64文件夹,并且我的应用程序无法运行.
有什么方法可以强制Visual Studio在主输出中包含x86和x64文件夹?
有没有办法在InstallShield中手动包含文件夹和相对路径?
我的环境:
- Visual Studio 2012专业版
- 安装Shield 2013限量版(免费)
- System.Data.SQLite 1.0.96
dll installshield system.data.sqlite visual-studio-2012 installshield-le
我正在使用System.Data.SQLite,从一个sqlite数据库表中选择一个列的类型为'integer',当我做这样的事情时:
int x = (int)reader["myColumn"];
Run Code Online (Sandbox Code Playgroud)
它失败.问题不在于该值为空; 该列不可为空.如果我将列的数据类型更改为"int",那么它可以正常工作.列中的值为"2","3","4"等; 没什么大不了的.
任何人都知道这是否是预期的行为?
SQLite v3.7.5
有没有一种方法,使SQLite的外键与cascade delete默认启用?给出以下示例:
CREATE TABLE [Parent] (
[ParentId] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[Name] VARCHAR(50) UNIQUE NOT NULL
);
CREATE TABLE [Child] (
[ChildId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
[ParentId] INTEGER NOT NULL,
[Name] VARCHAR(50) NOT NULL,
FOREIGN KEY(ChildId) REFERENCES Child(ParentId) ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)
我能够启用级联删除的唯一方法是PRAGMA foreign_keys = true在事务之前执行命令:
using( var conn = new SQLiteConnection( _conn ) )
{
conn.Open();
var pragma = new SQLiteCommand( "PRAGMA foreign_keys = true;", conn ); …Run Code Online (Sandbox Code Playgroud) 我有一个Windows Server 2008(64位)框,我正在开发.我已经安装了Visual Studio 2010和System.Data.SQLite(来自sqlite.phxsoftware.com).我的问题是,前者没有看到后者.也就是说,当我转到Visual Studio中的服务器资源管理器并选择"连接到数据库"并出现"选择数据源"窗口时,SQLite不会出现在数据源列表下.有谁知道这笔交易是什么?这可能是Windows Server 2008的一个问题,因为过去我在Windows 7机箱上没有VS 2010 + System.Data.Sqlite的问题.
更新:System.Data.SQLite和System.Data.SQLite.Linq程序集显示在我的GAC中
system.data.sqlite visual-studio-2010 windows-server-2008-r2
我有一个数据库创建工具,我从头开始创建一个数据库.这与在此提到的方式相同.它创建了一个临时数据库,我可以向其添加数据.
当我关闭数据库时,它被删除,这是预期的行为,但我不希望它被删除.
我在System.Data.SQLite中找不到Save或Create方法,并创建一个System.IO.File.Create(myDBFilename);创建SQLite无法连接的文件.
如何从头开始在代码中创建和保留数据库?
我有一个表"Customer",它在实体框架中是相应的ORMapping Entity Customer,我想找到一个对应于给定主键的对象.有点像customerobject.getbjectByID()lambda表达式或查询.
正如我可以从SQLite FAQ中读到的,它支持多个进程读取(SELECT),并且在任何时刻都只支持一个进程写入(INSERT,UPDATE,DELETE)数据库:
SQLite使用读取器/写入器锁来控制对数据库的访问.当任何进程想要写入时,它必须在更新期间锁定整个数据库文件.但这通常只需要几毫秒.其他流程只是等待作者完成然后继续他们的业务
我通过c#使用System.Data.SQLite适配器.
有人可以告诉我PLZ,这个过程到底是怎么回事?
这个过程是否会自动运行,编写SQLiteCommand只会等待另一个SQLiteCommand已经在同一个数据库上执行?
或者它可能会抛出异常?什么样的?
抱歉,但我没有找到有关此机制的信息:)
谢谢.
更新:
我发现帖子说异常会引发一个特定的错误代码
这句话是否正确?
我想将NaN值插入SQLite数据库.
我有与Id,StringColumn和DoubleColumn(不可为空)的Ent表,我尝试使用以下SQL语句:
INSERT INTO Ent (Id, StringColumn, DoubleColumn) VALUES (1, 'NaN test', ????)
Run Code Online (Sandbox Code Playgroud)
我不知道该代替'????' 有NaN存储.
我正在使用System.Data.SQLite访问数据库 - 也许这也很重要?
我已经SQLLite在我的应用程序中生成了我的模型,但是当我尝试调用DBContextCall时它会抛出异常.
System.IO.FileLoadException发生 了类型的异常,mscorlib.dll但未在用户代码中处理附加信息:无法加载文件或程序集'System.Data.SQLite.EF6,Version = 1.0.93.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
请帮我.
我希望能够在使用 SQLite 和 SqlServer 作为 ASP.NET Core 应用程序中实体框架的数据库提供程序之间进行切换。
DbContext将 a与数据库提供程序关联的通常模式是通过ConfigureServices方法中的代码:
services.AddDbContext<FeedbackDbContext>(options => options.UseSqlite(Configuration.GetConnectionString("Feedback")));
Run Code Online (Sandbox Code Playgroud)
EF Core 的每个数据库提供程序都添加了自己的扩展方法,如Use<Provider>.
令我惊讶的是,我找不到在配置中为连接字符串指定数据库提供程序的方法
sql-server system.data.sqlite entity-framework-core asp.net-core
c# ×5
sqlite ×5
.net ×2
asp.net-core ×1
database ×1
dll ×1
foreign-keys ×1
locking ×1
sql-server ×1