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

9

我正在尝试在使用EntityFramework 6.0(也尝试过5.0)管理的SqLite下,在VS 2012(.NET 4.5)中创建C#应用程序。

我的步骤如下:

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

    It installs components for VS2012

  2. Create C# project

  3. Using NuGet: Install-Package EntityFramework -Pre (it installs EF 6.0)

  4. Create simple Sqlite DB with one table, which DDL is following:

    CREATE TABLE MyTable (
    Id    INT      PRIMARY KEY,
    Name1 TEXT,
    Name2 VARCHAR,
    Blob1 BLOB,
    Date1 DATE,
    Date2 DATETIME 
    );
    
  5. Add new item to project: ADO.NET Entity Data Model:

  6. Database file mentioned above has been selected, connection string saved in config file

  7. Table is visible in wizard dialog, so I'm checking it and clicking Finish button.

现在应该生成代码,但我收到以下信息:
  • 目标.NET Framework版本当前不支持数据类型'longchar';表'main.MyTable'中的列'Name1'被排除。

  • 目标.NET Framework版本当前不支持数据类型'binary';表'main.MyTable'中的列'Blob1'被排除。

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

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

我感到非常惊讶,因为我之前已经使用过EF + Sqlite,但是使用了其他提供者(旧版1.0.66.0),并且没有遇到类型映射方面的问题。

您是否遇到过类似的问题?您知道如何解决这些问题吗?

最好的问候。


1
这里有一个类似的问题并提供了答案链接,你可能会觉得它很有帮助。 - Sam
1
我找到了这个链接,也许它会对你有所帮助。CLR类型和SQL类型默认映射 - trinaldi
1
我曾经为Oracle经历了同样的痛苦。我的做法是采用Code First方法,手动创建配置,并使用替代类型来处理不支持的类型。 - Aidin
1个回答

0

似乎SqLite版本1.0.85.0存在问题,但版本1.0.84.0可以正常工作。

如果可能的话,请在第一步使用版本84。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接