-1

問題ありません。FluentNHibernate/NHibernate がどの行にアクセスするかをどのように認識しているかに興味があります。

次の疑似コードには、次のエンティティがあります。

public class User
{
    public virtual int Id { get; protected set; }
    public virtual IList<Friend> Friends { get; set; }
}   

public class Friend
{
    public virtual int Id { get; protected set; }
    public virtual User User { get; set; }
    public virtual String FunnyProperty { get; set; }
}

この一対多の関係で:

public class UserMap : ClassMap<User>
{
    Id(x => x.Id);
    // One user has many friends
    HasMany(x => x.Friends).KeyColumn("UserId")...
}    

public class FriendMap : ClassMap<Friend>
{
    Id(x => x.Id);
    References(x => x.User, "UserId")... 
}

次のコードを実行して、双方向の関係を確立するとします。

var user = new User().Friends.AddRange( /* 5 friends */ );
/* 5 friends */.ForEach(friend => friend.User = user);

次に設定します。

user[2].FunnyProperty = "a magic string";

次に、ビジュアル データベース エクスプローラー ツールで、Usersテーブルを次のように表示します。


ID
--------------------------------------
63
--------------------------------------

および表Friendsは次のとおりです。


ID | ユーザー ID | 面白いプロパティ
--------------------------------------
24 | 63 | (ヌル)
--------------------------------------
25 | 63 | (ヌル)
--------------------------------------
26 | 63 | 魔法の糸
--------------------------------------
27 | 63 | (ヌル)
--------------------------------------
28 | 63 | (ヌル)
--------------------------------------

FluentNHibernate/NHibernate はid 26を 3 番目のFriendオブジェクトとしてどのように「記憶」しuser.Friendsますか? トランザクションをコミットし、別の場所で別のトランザクションを開始し、同じuser.Friends[2]. FluentNHibernate/NHibernate は、ID 26の行にアクセスすることをどのように認識しますか?

特に、以下のようにさまざまなユーザーが浮かんでいるFriendsテーブルがある場合、FluentNHibernate/NHibernate はアクセスする行をどのように「記憶」しますか?:


ID | ユーザー ID | 面白いプロパティ
--------------------------------------
24 | 24 | (ヌル)
--------------------------------------
25 | 89 | (ヌル)
--------------------------------------
26 | 66 | 魔法の糸
--------------------------------------
27 | 12 | (ヌル)
--------------------------------------
28 | 66 | (ヌル)
--------------------------------------
28 | 89 | (ヌル)
--------------------------------------

4

2 に答える 2

1

友達テーブルには、友達への参照であるプロパティ UserId が含まれています。Fluent NHibernatie は、これを定義した場所でマッピングを読み取ります。

于 2012-09-25T07:45:59.030 に答える
1

Friends テーブルにもインデックス列があります。

于 2012-09-25T13:52:32.833 に答える