2011-01-17 13 views
0

私は初めてEF Code Firstで作業していますが、私のタイプ間の関係を推測するのが難しいです。これらの2つのタイプを考える:EFコードの問題最初の外部キーの推論

<Table("grpGroupType")> 
Public Class GroupType 
    <Key()> 
    Public Property GroupTypeID As Integer 

    <Required()> 
    Public Property IsActive As Boolean 

    <Required()> 
    <MaxLength(100)> 
    Public Property Description As String 

    Public Overridable Property GroupDefinitions() As ICollection(Of GroupDefinition) 
End Class 

<Table("grpGroupDefinition")> 
Public Class GroupDefinition 
    <Key()> 
    Public Property GroupDefinitionID As Integer 

    <Required()> 
    Public Property GroupTypeID As Integer 

    <Required()> 
    Public Property IsActive As Boolean 

    <Required()> 
    Public Property ScopeValue As Integer? 

    <Required()> 
    <MaxLength(100)> 
    Public Property Description As String 

    Public Overridable Property GroupType As GroupType 
End Class 

私はロードし、DbContextクラスを使用してデータを保存することができますが、私はGroupType.GroupDefinitionsまたはGroupDefinition.GroupTypeにアクセスしようとすると、どちらも何も返しません。

Public Class PD 
    Inherits DbContext 

    Public Property GroupDefinitions As DbSet(Of GroupDefinition) 
    Public Property GroupTypes As DbSet(Of GroupType) 

    Protected Overrides Sub OnModelCreating(ByVal modelBuilder As  ModelConfiguration.ModelBuilder) 
    modelBuilder.Entity(Of GroupDefinition)().HasKey(Function(b) b.GroupDefinitionID) 
    modelBuilder.Entity(Of GroupType)().HasKey(Function(b) b.GroupTypeID) 
    End Sub 
End Class 

キー推論上の多くのドキュメントがあるように思えませんが、私はこのblog postを見つけた、私のクラスは、自動推論のための規則に従っていることを表示されます。私のDbContextクラスはここにあります。

誰かが正しい方向に向いていますか?あなたのGroupDefinitionクラスに

Public Property GroupTypeID As Integer 

を追加

+0

期待どおりに動作しないコードを表示してください。ありがとう。 –

答えて

0

私はそれを理解しました。私はローカルでDbContextを作成していたSelectOneメソッドを持っていました。私はコーリングコードでコンテキストを作成し、それをSelectOneに渡しました。みんな、ありがとう。

0

してみてください。

EFのCTP5バージョンでは、関係を拾うことができるように、明示的に定義する必要があるように見えます。個人的には、RTMの前にこれを修正することを願っています。

+0

ありがとうございますが、私はすでにそのクラスのプロパティを持っています。 – Roger

関連する問題