1

私は自分のサイトのパフォーマンスを最適化しようとしていたので 、コンパイル時にビューを生成するというポイントを実行しながらこれらのルール.edmxに従いました。ファイルを作成した後、このファイルを作成し、この問題に直面しているすべての手順に従います。

Schema specified is not valid. Errors: 
The property for the relationship 'FK_dbo_X_dbo_Y_x_id' contains a Role 'X' has a type 'Site.Models.X' that is not valid for a relationship End. Change the End Role to an EntityType.

私が持っているすべての関係のために。

このエラーを修正する方法を教えてもらえますか?

アップデート :

私の関係を定義する方法

モデル内:

    [ForeignKey("foreign_id")]
    public EntityCollection<MyClass> relation_obj { get; set; }

DbContext で:

modelBuilder.Entity<X>().HasMany(m => m.relation_obj );

リレーション アセンブリ :

[assembly: EdmRelationshipAttribute("DBModel", "FK_dbo_X_dbo_Y_x_id", "X", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(Site.Models.X), "Y", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Site.Models.Y), true)]
4

1 に答える 1

1

あなたの問題は、データベースへのマッピングを持たないナビゲーション プロパティ クラス (独自に定義したクラス) として定義することです。やらないでください。エンティティ フレームワークは、このようなナビゲーション プロパティでは機能しません。ナビゲーション プロパティの詳細については、こちらを参照してください。

問題はここにあります:

[assembly: EdmRelationshipAttribute("DBModel", "FK_dbo_X_dbo_Y_x_id", "X", System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(Site.Models.X), "Y", System.Data.Metadata.Edm.RelationshipMultiplicity.Many, typeof(Site.Models.Y), true)]

MSDN から:

"

public EdmRelationshipAttribute(
    string relationshipNamespaceName,
    string relationshipName,
    string role1Name,
    RelationshipMultiplicity role1Multiplicity,
    Type role1Type,
    string role2Name,
    RelationshipMultiplicity role2Multiplicity,
    Type role2Type
)

パラメーター

relationshipNamespaceName 型: System.String このエンティティが参加する関連付けの名前空間の名前。

relationshipName 型: System.String このエンティティが参加する関係の名前。

role1Name 型: System.String 関連付けの一端にある型の役割の名前。

role1Multiplicity 型: System.Data.Metadata.Edm.RelationshipMultiplicity アソシエーションの一端での多重度 (1 つまたは複数など) を示す RelationshipMultiplicity の値。

role1Type 型: System.Typeアソシエーションの一端にあるエンティティの型。

role2Name 型: System.String 関連付けの反対側にある型のロールの名前。

role2Multiplicity 型: System.Data.Metadata.Edm.RelationshipMultiplicity アソシエーションの反対側の多重度 (1 つまたは複数など) を示す RelationshipMultiplicity の値。

role2Type 型: System.Type アソシエーションの反対側にあるエンティティの型。"

したがって、role1Type と role2Type はエンティティである必要があります。独自に定義したクラスではありません。

于 2013-02-28T09:13:27.667 に答える