次のPOCOクラスがあります。
Public Class CompetitionSubscription
Public Property ID As Long
Public Overridable Property CompetitionID As Long
Public Overridable Property CompetitionPlayerID As Long
Public Property CompetitionStrength As Short?
Public Property StrengthWithinSection As Short?
End Class
<NotMapped()>
Public Class FullCompetitionSubscription
Inherits CompetitionSubscription
Public Property Competition As Competition
Public Property CompetitionPlayer As CompetitionPlayer
End Class
そして、次のような 1 つのテーブルだけの DbContext:
Public Class CompetitionSubscriptionsDB
Inherits DbContext
Public Property CompetitionSubscriptions As DbSet(Of CompetitionSubscription)
End Class
次のような単体テストを作成しました。
<TestMethod()>
Public Sub AddSubscriptionToDatabase()
Using db = New CompetitionSubscriptionsDB
Dim subscription = New FullCompetitionSubscription With
{.CompetitionID = 1,
.CompetitionPlayerID = 1,
.CompetitionStrength = 2,
.StrengthWithinSection = 12}
db.CompetitionSubscriptions.Add(DirectCast(subscription, CompetitionSubscription))
db.SaveChanges()
End Using
End Sub
これは次のエラーで失敗します (オランダ語から翻訳されているため、正確なメッセージではない可能性があります): EntityType CompetitionSubscriptionsLib.FullCompetitionSubscription のメタデータが見つかりません。
FullCompetitionSubscription
クラスは属性で装飾されているので、<NotMapped>
エラーメッセージは理解できますが、ポイントは、をベースとしてDirectCast
を「販売」することでした( のタイプをテストパスに変更した場合) 。FullCompetitionSubscription
CompetitionSubscription
DbContext
subscription
CompetitionSubscription
どこが間違っていますか?