Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ:索引自动异常_Linq - Fatal编程技术网

LINQ:索引自动异常

LINQ:索引自动异常,linq,Linq,我有这样一个LINQ实体: ID1 INT ID2 INT ID3 INT Value VARCHAR(50) ID1、ID2和ID3是复合主键。它与任何其他实体都没有关联 每当我在提交更改后更新或删除时,就会抛出一个索引自动失效异常。我正在运行.NET3.5SP1 我尝试创建另一个项目,仍然在.NET3.5SP1上,但没有遇到异常 代码如下: DataClasses context = new DataClasses(); Entity entity = (f

我有这样一个LINQ实体:

ID1 INT
ID2 INT
ID3 INT
Value VARCHAR(50)
ID1、ID2和ID3是复合主键。它与任何其他实体都没有关联

每当我在提交更改后更新或删除时,就会抛出一个索引自动失效异常。我正在运行.NET3.5SP1

我尝试创建另一个项目,仍然在.NET3.5SP1上,但没有遇到异常

代码如下:

        DataClasses context = new DataClasses();
        Entity entity = (from entities in context.Entities
                              where entities.ID1 == 3
                                && entities.ID2 == 1
                                && entities.ID3 == 1
                              select entities).First();

        context.Entities.DeleteOnSubmit(entity);
        context.SubmitChanges();
例外情况如下:

System.IndexOutOfRangeException was unhandled by user code
  Message="Index was outside the bounds of the array."
  Source="System.Data.Linq"
  StackTrace:
       at System.Data.Linq.IdentityManager.StandardIdentityManager.MultiKeyManager`3.TryCreateKeyFromValues(Object[] values, MultiKey`2& k)
       at System.Data.Linq.IdentityManager.StandardIdentityManager.IdentityCache`2.Find(Object[] keyValues)
       at System.Data.Linq.IdentityManager.StandardIdentityManager.Find(MetaType type, Object[] keyValues)
       at System.Data.Linq.CommonDataServices.GetCachedObject(MetaType type, Object[] keyValues)
       at System.Data.Linq.ChangeProcessor.GetOtherItem(MetaAssociation assoc, Object instance)
       at System.Data.Linq.ChangeProcessor.BuildEdgeMaps()
       at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
       at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
       at System.Data.Linq.DataContext.SubmitChanges()
       at Project.Page.Page_Load(Object sender, EventArgs e) in C:\ProjectFolder\Project\Page.aspx.cs:line 31
       at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
       at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
       at System.Web.UI.Control.OnLoad(EventArgs e)
       at System.Web.UI.Control.LoadRecursive()
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException: 

看来linqtosql(已经/曾经)在复合键方面遇到了问题。实际源是
MultiKeyManager
TryCreateKeyFromValues(Object[]values

这与您的错误完全相同,条件类似。区别在于他有另一个字段来修改.dbml模型并标记为PK

您是否能够在.dbml模型中修改/删除3个整数的
PrimaryKey=true
属性

那篇文章的关键引语是:

从SomeType和SomeValue中删除PrimaryKey=true属性,并将其添加到ViewID属性中,现在LinqToSql可以正确处理关联


我从头开始重新创建了DBML。唉…

有符合您标准的记录吗?是的。它返回一条记录。我按照您的要求做了,但它仍然抛出相同的错误。谢谢。