【发布时间】:2015-01-23 18:15:35
【问题描述】:
在仔细研究了这个奇怪问题的解决方案之后,我什么也没做。我非常绝望。
我正在开发一个 MVC3 项目。
我有一个这样的 DB Context 类:
//SpaceUpEntities.cs
public class SpaceUpEntities: DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Profile> Profiles { get; set; }
public DbSet<Venue> Venues { get; set; }
public DbSet<Room> Rooms { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<Event> Events { get; set; }
public DbSet<Capacity> Capacities { get; set; }
public DbSet<VenueStatus> VenueStatuses { get; set; }
}
我在应用程序启动时初始化 DBContext
//Global.asax.cs
protected void Application_Start()
{
Database.SetInitializer<SpaceUpEntities>(null);
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
RegisterDependencyInjection();
ModelBinders.Binders.DefaultBinder = new TrimModelBinder();
}
当我想查询/插入/更新到数据库时会出现问题。 比如这段代码
//SecurityRepository.cs
public RegisterFeedback Register(User user, Profile profile)
{
try
{
using (var entities = new SpaceUpEntities())
{
// Check existing email address
var emailExisted = entities.Users.FirstOrDefault(i => i.Email == user.Email);
//... So on
}
}
catch (Exception e)
{
Logger.Error(e);
return new RegisterFeedback(false, Messages.GeneralError);
}
}
using (var entities = new SpaceUpEntities()) 实体应该已经初始化,但我最终得到了这个错误
错误信息:
函数评估被禁用,因为之前的函数评估 时间到。您必须继续执行才能重新启用功能 评估。
一开始,我以为是我的服务器连接问题,所以我检查了:
- 连接字符串
- SQL Server 设置 (SQL Server 2012)
虽然我几乎不明白为什么它们是导致此问题的原因,因为我采用了多种方法来测试我的 ConnectionString 以发现它没有问题。
任何帮助都将不胜感激。 提前谢谢你。
唐做
P/S:这是我测试连接字符串的方式: 这是我的连接字符串 我用这个测试了它
【问题讨论】:
-
您能否确认您的表已在数据库中创建并已植入数据?
-
表肯定是创建的。数据库中有样本数据。
-
从您的屏幕截图中不清楚错误是什么,但是通过执行
Database.SetInitializer<SpaceUpEntities>(null);您正在关闭数据库初始化程序。 -
工具 -> 选项调试 取消选中“启用属性评估和其他隐式函数调用”然后查看是否有任何错误
-
@Zaki:取消选中该选项后我仍然收到相同的错误
标签: c# asp.net-mvc entity-framework asp.net-mvc-3