我看到这个问题已经被提了很多,但是没有一个解决方案对我有帮助,因为我先使用模型而不是代码。
我在VS 2015中使用EF6进行了一个C#项目。我正在使用模型第一种方法构建数据库,并且可以从模型成功生成SQL代码并在SSMS中运行它。我使用的是SQL Server LocalDB。
我遇到的问题是,每当我尝试将编程创建的实体添加到它所属的集合(表)时,我总是会收到错误
类型' System.Data.Entity.Core.MetadataException'的异常发生在mscorlib.dll中但未在用户代码中处理
其他信息:指定的架构无效。
错误: Market.ssdl(184,6):错误0040:类型nvarchar(max)未使用命名空间或别名限定。只有原始类型才能使用,无需限定。
我创建的实体只有一个属性;字符串(或数据库中的nvarchar(max))。同样,我可以创建对象,但是在保存任何更改之前我尝试将其添加到其集合(或表)中的那一刻,我得到了上述错误。我甚至尝试不命名Name属性,但错误仍然存在。
using (var context = new MarketContainer())
{
// Create data source
var datasource = new DataSource()
{
Name = dataSourceName
};
// Save data source
context.DataSources.Add(datasource);
}
另一个SO答案提议右键单击.tt文件并单击"运行自定义工具",但这没有做任何事情。
我用MySQL尝试了一次,它运行良好!现在我需要转移到SQL Server它不起作用......我已经坚持这个问题超过一个星期了,所以任何帮助都会有很长的路要走。
答案 0 :(得分:2)
问题已经解决。我正在引用包含来自另一个项目的实体模型的项目,并且App.configs不匹配。将内容从实体项目的配置文件复制到引用项目后,一切都开始正常工作。
希望这可以帮助除我以外的其他人!