【问题标题】:system.data.dataset.EnableContraints Exception with no network connectionsystem.data.dataset.EnableContraints 没有网络连接的异常
【发布时间】:2014-11-20 11:02:16
【问题描述】:

我有一个由本地数据库支持的网络服务,当托管它的机器连接到网络时一切正常,当我断开网络电缆并访问相同的网络方法时,我得到一个异常:

2014-11-19 13:46:24,151 DEBUG  Sage.Client.Core.Web.ActionFilters.LogExceptionsAttribute System.Data.ConstraintException: Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
at System.Data.DataSet.EnableConstraints()
at System.Data.DataSet.set_EnforceConstraints(Boolean value)
at System.Data.DataTable.EndLoadData()
at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
at Microsoft.Practices.EnterpriseLibrary.Data.Database.DoLoadDataSet(IDbCommand command, DataSet dataSet, String[] tableNames)
at Microsoft.Practices.EnterpriseLibrary.Data.Database.LoadDataSet(DbCommand command, DataSet dataSet, String[] tableNames)
at Microsoft.Practices.EnterpriseLibrary.Data.Database.LoadDataSet(DbCommand command, DataSet dataSet, String tableName)
at Sage.MMSAdmin.DBLayer.SessionHelper.GetSession(String sessionIdentifier)
at Sage.MMSAdmin.DBLayer.SessionHelper.SessionInfo(String sessionIdentifier)
at Sage.MMSAdmin.DBLayer.SAA.SAAAPI.GetSessionContextData(String sessionID)
at Sage.MMS.SAA.Client.InProcessProxy.SAAInProcessProxy.GetSessionContextData(String sessionID)
at Sage.Client.Core.Web.ActionFilters.RequiresValidCompanyAttribute.FetchContextData(String sessionID)
at Sage.Client.Core.Web.ActionFilters.RequiresValidCompanyAttribute.ValidateSession(ActionDescriptor actionDescriptor, HttpContextBase httpContext)
at Sage.Client.Core.Web.Attributes.ClaimsAuthorizeAttribute.OnAuthorization(AuthorizationContext filterContext)
at System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__19(AsyncCallback asyncCallback, Object asyncState)  

这似乎与身份验证有关,但是我不明白为什么如果没有网络连接但成功使用它会失败。

数据库是 SQLServer2012。

任何建议或指针将不胜感激

【问题讨论】:

    标签: c# .net sql-server web-services


    【解决方案1】:

    问题在于表中的数据,字段中有一个空值被标记为NOT NULL,因此dataAdapter无法填充该数据并抛出异常,因为现有数据不满足在表(数据模型)上设置的约束。

    问题是由于直接使用sql代码向表中插入数据引起的,因此在插入数据之前代码没有检查约束(另外数据可能在约束之前已经存在)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2020-07-28
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多