过去几个小时,我试图将当前项目从Sql Server“移植”到MySQL,我最终得到的错误如下:
底层提供程序不支持varchar(max)类型(或 uniqueidentifier,或其他东西)
我使用POCO和Code First - 我认为,EF的目的之一是提供简单的存储库“切换”,但即使基本类型未正确映射也会接近:/
我也试过SQlite,但它的形状最差,据我所知,还缺乏Postrage SQL支持。
所以...问题是 - 是否有任何跨平台(最好是免费的)数据库,在EF中有真正的(类似SQL Server)支持?
提前致谢。
最好的问候。
编辑:
通过更具体的说明我的方法:
我使用POCO和Code First,我想自动创建数据库,如果它不存在,我不会在我的POCO类中使用任何特殊的东西,只是标准的.NET类型。示例POCO如下所示:
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[Required]
[StringLength(128)]
public string Name { get; set; }
[Required]
public int AgencyID { get; set; }
[Required]
public bool IsEnabled { get; set; }
#region NavigationProperties
[NavigationProperty]
public virtual Agency Agency { get; set; }
#endregion
EDIT2:
我的app.config看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<!--<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>-->
<defaultConnectionFactory type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
</entityFramework>
</configuration>
答案 0 :(得分:2)
您似乎将sqlServer设置为app / wbeb.config文件中的defaultConnectionFactory,从而导致使用SqlServer类型的EF。您需要将defaultConnectionFactory设置为MySQL连接工厂。
答案 1 :(得分:0)
我整晚都在努力解决同样的错误。修复是违反直觉的,但到目前为止一直很好......似乎问题与使用LocalDB(SQL Server)设置的旧迁移有关,但即使删除旧的迁移也没有效果。我还花费了大量不必要的时间来摆弄我的Web.config,数据库环境等等...我建议在敲打墙头之前尝试以下方法......
由于某种原因,当解决方案资源管理器中的迁移删除无效时,这对我来说就是一个诀窍。显然,这并没有删除数据库中的迁移历史记录......
对于OP的记录,这与ASP.net身份和MVC Auth系统一起工作得很好......我认为SimpleMembership现在已经过时但我没有开发桌面应用......