NPoco の Delete() メソッドを使用して、データベースから行を削除しようとしています。ただし、NullReferenceException をスローするだけです。
回避策を見つけましたが、ID で削除する組み込みの削除機能が機能しないように見える理由を誰かが知っているかどうか疑問に思っています。これは複数のテーブルで発生します。[PrimaryKey("ID")]
私のすべてのテーブルには、デコレータを使用してモデルでフラグが付けられた、ID と呼ばれる標準の整数主キーがあります。
オブジェクト参照がオブジェクト インスタンスに設定されていません。
Delete<PurchaseItem>(id); // throws null reference exception.
Delete<PurchaseItem>("where id = @0", id); // works.
渡される ID は有効で、アイテムはデータベースにあります。このコードは、SQL を実行するまでには至りません。
スタックトレース:
[NullReferenceException: Object reference not set to an instance of an object.]
NPoco.PocoDataFactory.ForObject(Object o, String primaryKeyName) in d:\Adam\projects\NPoco\src\NPoco\PocoDataFactory.cs:41
NPoco.Database.Delete(String tableName, String primaryKeyName, Object poco, Object primaryKeyValue) in d:\Adam\projects\NPoco\src\NPoco\Database.cs:1587
NPoco.Database.Delete(Object pocoOrPrimaryKey) in d:\Adam\projects\NPoco\src\NPoco\Database.cs:1598
Harmsworth.DAL.HarmsworthDB.DeletePurchaseItemFromBasketByID(Int32 id) in c:\inetpub\wwwroot\harmsworth\Website\classes\HarmsworthDAL.cs:224
Harmsworth.ViewBasketPage.RemoveItem(Int32 id) in c:\inetpub\wwwroot\harmsworth\Website\view-basket.aspx.cs:187
Harmsworth.ViewBasketPage.PurchaseItemsRepeater_ItemCommand(Object sender, RepeaterCommandEventArgs e) in c:\inetpub\wwwroot\harmsworth\Website\view-basket.aspx.cs:75
System.Web.UI.WebControls.Repeater.OnItemCommand(RepeaterCommandEventArgs e) +111
[more redundant trace info]