これで私の髪を引き出し始めたので、ここで質問してみるといいでしょう。Db.LoadSelect throw NullReferenceException
私はこの単純なサービスがあります。
public class EventService : Service
{
public object Get(GetEvents request)
{
return Db.LoadSelect<Event>();
}
}
LoadSelectは()とNullReferenceExceptionがスローされます。
私は実際には以前より完全に機能していましたが、現在では何が原因で例外がスローされているのか分かりません。
てきたが、実際にServiceStack(ServiceStack.OrmLite.Support.LoadList)内例外をスローして、このラインにそれを突き止め:
LoadList-NullReferenceException
しかし、地元の人々を見て、すべてが私には罰金です。つまり、明らかにデータベースからデータを取得することができ、その部分がうまく、データが正しく、ForeignKeysなどすべてが解決されるようです。
だから、それは得ることができない、または設定されていない価値をどのような、私は考えていません:/
これはさらに素晴らしいことだトラブルシューティングする方法上の任意のヒントを! =)
[EDIT1 - ここPOCOSある]
public class Event
{
[PrimaryKey]
public int Id { get; set; }
public int Timestamp { get; set; }
public int MessageId { get; set; }
[Reference]
public Message Message { get; }
}
public class Message
{
[PrimaryKey]
public int Id { get; set; }
public string Text { get; set; }
}
[EDIT2 - 調査結果DUP答えて読んだ後]最初の質問で述べたように
、基本とNullReferenceExceptionトラブルシューティングが実行されており、私はServiceStackフレームワークに深く掘り下げて、原因を特定しています。
私が見る限り、例外をスローする呼び出しで消費されるすべての変数はokeyです(下のスクリーンショットを参照)。
一つだけ(下の画像で強調表示)は、ServiceStack OrmLite参照のAPIによって処理されなければならないが、多分もっとfamilierフレームワークと誰かがコメントすることができますが、それはすべての...少なくとも私にはよさそうだ
LoadList-NullReferenceException-002
おそらく私はReferences APIを間違って使用していますか?
データベースの構造は非常に単純です:
イベント表
| Event | CREATE TABLE `Event` (
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Timestamp` int(11) NOT NULL,
`MessageId` int(4) unsigned NOT NULL,
PRIMARY KEY (`Id`),
KEY `MessageId_FK` (`MessageId`),
CONSTRAINT `MessageId_FK` FOREIGN KEY (`MessageId`) REFERENCES `Message` (`Id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
mysql> SELECT * FROM Event;
+----+------------+-----------+
| Id | Timestamp | MessageId |
+----+------------+-----------+
| 1 | 1501026747 | 1 |
| 2 | 1501027047 | 1 |
+----+------------+-----------+
メッセージテーブル
| Message | CREATE TABLE `Message` (
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`Text` varchar(255) NOT NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `Id_UNIQUE` (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
mysql> SELECT * FROM Message;
+----+---------------------------------------------+
| Id | Text |
+----+---------------------------------------------+
| 1 | Someone is at the door! |
| 2 | 1 has acknowledged the notification. |
| 3 | 2 has acknowledged the notification. |
| 4 | 3 has acknowledged the notification. |
+----+---------------------------------------------+
例外の詳細
System.NullReferenceException occurred
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=ServiceStack.OrmLite
StackTrace:
at ServiceStack.OrmLite.Support.LoadList`2.SetRefSelfChildResults(FieldDefinition fieldDef, ModelDefinition refModelDef, FieldDefinition refSelf, IList childResults) in C:\TeamCity\buildAgent\work\12884bd5feef0ce7\src\ServiceStack.OrmLite\Support\LoadList.cs:line 154
私は、単に例外メッセージの画像を投稿するだけでは役に立ちませんが、注意しておいても、画像には、例外を投げる関数に入るすべての変数を示すローカル変数リストも含まれています。私がここに来るのは、その終わりにすべてがうまく見えるからです。 とにかく、要求通りに例外の詳細をコピーしました。新しい情報は得られません。 @Will – Max