Cal*_*ass 25 c# entity-framework
在我的应用程序中,我收到以下错误:
在创建模型时不能使用上下文.
我不确定这意味着什么.我做了一切正常,通常它的工作原理,但对于这一个,它不是.以下是我的代码:
App.config中:
<connectionStrings>
<add name="DatabaseContext" connectionString="Data Source=./SQLEXPRESS;Initial Catalog=ProjectCode;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
Products.cs:
class Products
{
public int ProductID { get; set; }
public string ProductName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
DatabaseContext.cs:
class DatabaseContext : DbContext
{
public DbSet<Products> Products { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Program.cs中:
DatabaseContext context = new DatabaseContext();
try
{
var products = context.Products.ToList();
foreach (var item in products)
{
Console.WriteLine(item.ProductID + " : " + item.ProductName);
}
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
这条线是失败的 var products = context.Products.ToList();
可能导致这种情况的任何想法?我在我的数据库中设置了2个产品,因此应该输出它们.
这是我的整个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=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<connectionStrings>
<add name="DatabaseContext" connectionString="Data Source=./SQLEXPRESS;Initial Catalog=ProjectCode;Integrated Security=SSPI;MultipleActiveResultSets=true" providerName="System.Data.SqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; MultipleActiveResultSets=True" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
</configuration>
Run Code Online (Sandbox Code Playgroud)
mjb*_*es7 16
在您的连接字符串下的App.Config文件中,您有一个正斜杠(./SQLEXPRESS).将其更改为反斜杠.\ SQLEXPRESS如下:
<add name="DatabaseContext" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=ProjectCode;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
ntz*_*lis 15
我过去经历过这个问题,通常是因为没有使用最新版本+引用问题.
尝试从NuGet获取所有项目的最新EF版本,看看错误是否消失:http:
//blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-released的.aspx
更新
此错误的另一个原因可能是,当您第一次创建上下文并因此导致创建模型时,您将在单独的线程上创建另一个上下文.在模型创建完成后,您必须等待创建其他上下文实例.
小智 9
我能够通过添加来解决这个问题
MultipleActiveResultSets=true
Run Code Online (Sandbox Code Playgroud)
到我的EF连接字符串.
我通过添加这个多线程连接参数来修复它.
| 归档时间: |
|
| 查看次数: |
67469 次 |
| 最近记录: |