Mysql + Eager Loading导致ConstraintException

时间:2013-03-12 00:53:54

标签: mysql entity-framework

我尝试使用预先加载(一些简单的Include语句)加载几个相关实体。但由于一些奇怪的原因,抛出了ConstraintException。我不确定这是否是MySql Connector或其他地方的错误。

我的架构如下所示: enter image description here

当我尝试使用以下语句加载数据时:

CurrentConnection.DynFormPresetSet
.Include("Definitions")
.Include("Definitions.FieldDefs")
.Include("Definitions.FieldDefs.Literals")
.FirstOrDefault(p => p.PresetValue == (int)presetDefinition);

我得到了这个例外:

[ConstraintException: Diese Eigenschaft kann nicht auf einen NULL-Wert festgelegt werden.]
System.Data.EntityUtil.ThrowPropertyIsNotNullable(String propertyName) +89
System.Data.Objects.DataClasses.StructuralObject.SetValidValue(String value, Boolean isNullable) +24
MyApp.Model.DynFormLiteral.set_Label(String value) in d:\Dev\CSharp\Repository\MyApp.Model\MyEntities.cs:2900
lambda_method(Closure , Shaper ) +341

问题是由Definitions.FieldDefs.Literals关系引起的。如果我删除Literals上的热切加载它就可以了。我检查了SQL Query生成的ResultSet,看起来实体框架尝试创建一个DynFormLiteral,即使没有分配。由于某些奇怪的原因,负责文字的ID列不为空。

如果我包含Definitions.FieldDefs.Validators而不是Literals,则该语句也有效。但是,如果我包含LiteralsValidators,则SQL语句完全无效:

[MySqlException (0x80004005): Unknown column 'Extent1.Id' in 'where clause']
MySql.Data.MySqlClient.MySqlStream.ReadPacket() +383
MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId) +116

我无法解释那里发生了什么,但我知道这是错的!有没有人遇到类似的问题或者想知道如何解决这个问题?

我目前的设置是:

0 个答案:

没有答案
相关问题