C# 代码优先迁移在SQL Server CE中生成NTEXT而不是nvarchar

C# 代码优先迁移在SQL Server CE中生成NTEXT而不是nvarchar,c#,sql-server-ce,entity-framework-6,entity-framework-migrations,C#,Sql Server Ce,Entity Framework 6,Entity Framework Migrations,我已经开始在项目中引入代码优先迁移,但是我偶然发现了几个我无法解决的问题 设置是,该项目有两个目标:一个联机客户端,它连接到WCF服务并使用常规SQL Server数据库。还包括一个脱机客户端,它在本地保存所有数据并使用SQL Server CE数据库 这已经奏效了。现在我需要介绍一种迁移两个数据库版本的方法。当然,我更喜欢使用相同的迁移代码。到目前为止,我所做的是: 使用localhost SQL Server db启用迁移,我在其中创建针对的迁移 为初始迁移添加迁移 一个问题是,当我使用Cr

我已经开始在项目中引入代码优先迁移,但是我偶然发现了几个我无法解决的问题

设置是,该项目有两个目标:一个联机客户端,它连接到WCF服务并使用常规SQL Server数据库。还包括一个脱机客户端,它在本地保存所有数据并使用SQL Server CE数据库

这已经奏效了。现在我需要介绍一种迁移两个数据库版本的方法。当然,我更喜欢使用相同的迁移代码。到目前为止,我所做的是:

使用localhost SQL Server db启用迁移,我在其中创建针对的迁移 为初始迁移添加迁移 一个问题是,当我使用CreateIfNoteExists初始值设定项创建SQL Server CE数据库时,将使用映射到nvarchar列的所有字符串属性创建db

但是,当我开始使用migrations并使用MigrateToLatestVersion初始值设定项创建我的db时,将创建db,但字符串属性现在映射到NTEXT列

后续种子失败,因为我得到以下异常:

不能在WHERE、HAVING、GROUP BY、ON或in子句中使用ntext和image数据类型,除非这些数据类型与LIKE或IS NULL谓词一起使用

我曾试图强制模型生成器对字符串使用nvarchar,但没有效果。它被完全忽略了

modelBuilder.Properties<string>().Configure(config => config.HasColumnType("nvarchar"));

我真的有点迷路了。

我找到了解决办法,真的很尴尬

在为字符串属性添加modelbuilder代码后,我忘记了重新创建初始迁移

我刚刚重新创建了它,现在它工作了