0

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

我的架构如下所示: 在此处输入图像描述

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

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,即使没有分配。由于某种奇怪的原因,负责 Literal 的 ID 列不为空。

如果我包括Definitions.FieldDefs.Validators而不是Literals该语句也有效。但是如果我包含了Literals并且ValidatorsSQL 语句是完全无效的:

[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

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

我目前的设置是:

4

0 回答 0