0

熱心な読み込み (いくつかの単純な Include ステートメント) を使用して、いくつかの関連するエンティティを読み込もうとしています。しかし、何らかの奇妙な理由で ConstraintException がスローされます。これが MySql Connector のバグなのか、それとも他の場所のバグなのかはわかりません。

私のスキーマは次のようになります。 ここに画像の説明を入力

このステートメントを使用してデータをロードしようとすると:

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関係によって引き起こされます。リテラルの熱心な読み込みを削除すると、機能します。SQL クエリによって生成された ResultSet を確認しましたが、何も割り当てられていない場合でも、Entity Framework が DynFormLiteral を作成しようとしているようです。リテラルを担当する ID 列は、何らかの奇妙な理由で null ではありません。

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

そこで何が起こっているのか、うまく説明できませんが、それが間違っていることはわかっています。誰かが同様の問題に遭遇したか、この問題を解決する方法を知っていますか?

私の現在の設定は次のとおりです。

4

0 に答える 0