我在我的计算机上本地开发了一个小型Web窗体应用程序,它运行良好,但当我将它移动到另一台计算机时,我用AJAX查询的Web服务失败。
以下是相关代码:
/*Search for Event.country by name*/
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string[] GetVenues(string searchterm)
{
var _db = new MyApp.Models.EventContext();
var myResult = from e in _db.Events
where e.venue.Contains(searchterm)
select e.venue;
return myResult.Distinct().ToArray();
}
我怀疑我的问题在于EventContext类中的OnModelCreating方法:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Event>().ToTable("events");
}
我从本地计算机备份数据库并在另一台计算机上恢复它,所以我怀疑我在OnModelCreating上做错了,因为该表已经存在。我的假设是否正确?
以下是我从Firebug观看的Web服务回复中得到的错误消息:
{"Message":"An exception occurred while initializing the database. See the InnerException for details.","StackTrace":"
at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)
at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()
at System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase> b__4(InternalContext c)
at System.Data.Entity.Internal.RetryAction'1.PerformAction(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action'1 action)
at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase()
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet'1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet'1.get_InternalContext()
at System.Data.Entity.Infrastructure.DbQuery'1.System.Linq.IQueryable.get_Provider()
at System.Linq.Queryable.Where[TSource](IQueryable'1 source, Expression'1 predicate)
at MyApp.WebServices.AutoComplete.GetVenues(String searchterm)","ExceptionType":"System.Data.DataException"}
答案 0 :(得分:1)
很难从所提供的数据中弄清楚问题的根源究竟是什么。
您的评论声明您无权在朋友的计算机上调试应用程序。您是否在Visual Studio中尝试过Remote Debugging?
您可能还想检查数据库中是否定义了可空类型,或者列值是否与数据库默认值不同。这将表明数据存在问题,以及DataException
的原因