我已经开始在项目中引入代码首次迁移,但是我偶然发现了一些我无法解决的问题。
设置是,项目有两个目标:在线客户端,它连接到WCF服务并使用常规SQL Server数据库。还包括一个脱机客户端,它在本地保存所有数据并使用SQL Server CE数据库。
这已经有效了。现在我需要介绍一种迁移两个数据库版本的方法。当然我更喜欢使用相同的迁移代码。到目前为止我所做的是:
enable-migrations
(使用localhost SQL Server db,我在其中创建迁移)add-migration
(初次迁移)一个问题是,当我使用CreateIfNotExists
初始化程序创建SQL Server CE数据库时,将创建数据库,并将所有字符串属性映射到nvarchar
列。
但是,当我开始使用迁移并使用MigrateToLatestVersion
初始化程序创建我的数据库时,将创建数据库,但字符串属性现在已映射到NTEXT
列。
后续种子失败,因为我得到以下异常:
ntext和image数据类型不能在WHERE,HAVING,GROUP BY,ON或IN子句中使用,除非这些数据类型与LIKE或IS NULL谓词一起使用。
我试图强制模型构建器使用nvarchar
作为字符串,但无济于事。它完全被忽略了。
modelBuilder.Properties<string>().Configure(config => config.HasColumnType("nvarchar"));
我真的迷失了。
答案 0 :(得分:0)
我找到了解决方案,真的很尴尬。
在我为字符串属性添加了我的模型构建器代码之后,我忘了重新创建我的初始迁移。
我现在只是重新创建它并且有效。