10

多対多の関係を利用した Fluent NHibernate の例で問題が発生しています。同様のケースの例を見つけようとしましたが、たくさん見つかりましたが、まだ同じ問題が発生しています。

テスト プロジェクトを実行すると、次の例外がスローされます。

NHibernate.PropertyAccessException: project.Entities.User.UserName の getter で例外が発生しました ---> System.Reflection.TargetException: オブジェクトがターゲット タイプと一致しません。

これはテーブルのイメージです:

テーブル

そしてコード

 public UsersMap()
    {

        this.Table("Users");
        Id(x => x.UserName).Column("Username").GeneratedBy.Assigned();

        Map(x => x.FirstName);
        Map(x => x.LastName);
        Map(x => x.Password);
        Map(x =>x.EMail);
        Map(x => x.Title);
        Map(x => x.Division);


        HasManyToMany<User>(x => x.Roles)
            .Table("UserInRoles").ParentKeyColumn("Username")
            .ChildKeyColumn("Usernamepk")
           .Cascade.SaveUpdate().LazyLoad();


    }

  public RolesMap()
    {
        this.Table("Roles");
        Id(x => x.ID).GeneratedBy.Assigned().Column("ID");
        Map(x => x.RoleName).Length(50);

        HasManyToMany<User>(x => x.Users)
            .Table("UserInRoles").ParentKeyColumn("ID")
            .ChildKeyColumn("RoleIdpk").Cascade.SaveUpdate().LazyLoad();

    }

ここにコードがあります。ウェブ上のほとんどの例と Fluent Nhibernate マッピング ページは同じ方法で書かれているので、アイデアはありますか?

4

1 に答える 1

15

私のプロジェクトで使用しているコードに関しては、manyTomany 関係を次のように定義します。

 public UsersMap()
    {
...
            HasManyToMany(x => x.Roles)
                .WithTableName("UserInRoles")
                .WithParentKeyColumn("Usernamepk")
                .WithChildKeyColumn("RoleIdpk");
    }

  public RolesMap()
    {
...
            HasManyToMany(x => x.Users)
                .WithTableName("UserInRoles")
                .WithParentKeyColumn("RoleIdpk")
                .WithChildKeyColumn("Usernamepk");

    }

そのような定義は私にとってはうまくいきます。最初にこれを確認してから、LazyLoading およびその他のプロパティで装飾します。

于 2009-08-24T10:11:00.520 に答える