SqLite + EntityFramework 5/6的不支持的类型映射

wre*_*con 8 c# sqlite entity-framework

我正在尝试在VS 2012(.NET 4.5)下创建C#app,使用由EntityFramework 6.0管理的SqLite(也试用了5.0).

我的步骤如下:

  1. http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki安装sqlite-netFx45-setup-bundle-x86-2012-1.0.85.0.exe

    它为VS2012安装组件

  2. 创建C#项目

  3. 使用NuGet:Install-Package EntityFramework -Pre(它安装EF 6.0)
  4. 使用一个表创建简单的Sqlite DB,DDL遵循以下内容:

    CREATE TABLE MyTable (
    Id    INT      PRIMARY KEY,
    Name1 TEXT,
    Name2 VARCHAR,
    Blob1 BLOB,
    Date1 DATE,
    Date2 DATETIME 
    );
    
    Run Code Online (Sandbox Code Playgroud)
  5. 将新项添加到项目:ADO.NET实体数据模型:
  6. 已选择上述数据库文件,连接字符串保存在配置文件中
  7. 表在向导对话框中可见,因此我正在检查它并单击"完成"按钮.

现在应该生成代码,但我没有以下消息:

  • 目标.NET Framework版本当前不支持数据类型"longchar"; 表'main.MyTable'中的列'Name1'被排除在外

  • 目标.NET Framework版本当前不支持数据类型"二进制"; 表'main.MyTable'中的"Blob1"列被排除在外.

  • 目标.NET Framework版本当前不支持数据类型"date"; 表'main.MyTable'中的"Date1"列被排除在外.

  • 目标.NET Framework版本当前不支持数据类型"date"; 表'main.MyTable'中的'Date2'列被排除在外.

我对此感到非常惊讶,因为我已经使用EF + Sqlite,但使用其他提供程序(遗留1.0.66.0),我没有类型映射问题.

你在提到的Sqlite版本中遇到过类似的问题吗?你知道一些解决这个问题的方法吗?

最好的祝福.

小智 0

SqLite 版本 1.0.85.0 似乎有问题,但是版本 1.0.84.0 可以工作。

如果可能,请在步骤 1 中使用版本 84。

(顺便说一句,我刚刚检查了他们的网站 - 1.0.90.0 已经发布,你可能也想尝试一下)

旁注:如果MyTable定义不仅仅是一个示例,我建议使用nvarchar而不是varchartext