[英]Custom reference mapping in Fluent Nhibernate
在我的數據庫中,我有兩個表,一個在邏輯上引用另一個,但沒有定義外鍵(我無法控制數據庫,所以必須忍受它)。 例如:
Table1 (
Table1Id int,
Column1 int,
Column2 int
)
Table2 (
Table2Id int,
Column1FromTable1 int,
Column2FromTable1 int
)
假設保證(Column1, Column2)
對對於Table1
是唯一的。
在代碼中,我想為Table1
定義HasMany
映射,如下所示:
public class Table1
{
public int Id
{
get;
set;
}
public IEnumerable<Table2> Table2s
{
get;
set;
}
}
public class Table2
{
public int Id
{
}
public Table1 Table1
{
get;
set;
}
}
public class Table1Map : ClassMap<Table1>
{
public Table1Map()
{
Id(x => x.Id).Column("Table1Id");
HasMany(x => x.Table2s); //What next?
}
}
我該怎么做? 我可以使用OneToManyPart
的哪些方法來定義引用?
簡單來說,使用Fluent NHibernate,如何綁定數據庫中沒有綁定的代碼實體? 問題還在於我必須在這里使用的復雜鍵。
同樣,在這種情況下我無法更改數據庫,否則這將是我的自然選擇。
您將需要 map Col1
& Col2
作為復合鍵,如下所示:
public class Table1Map : ClassMap<Table1>
{
public Table1Map()
{
UseCompositeId()
.WithKeyProperty( x => x.Column1 , "Column1" )
.WithKeyProperty( x => x.Column2 , "Column2" );
HasMany(x => x.Table2s)
.WithKeyColumn( "Column1FromTable1" )
.WithKeyColumn( "Column2FromTable1" ) ;
Map(x => x.Id).Column("Table1Id");
}
}
在Table2
的映射中:
public class Table2Map : ClassMap<Table2>
{
public Table2Map()
{
Id(x => x.Id).Column("Table2Id");
References(x => x.Table1)
.WithColumns( "Column1FromTable1", "Column2FromTable1" ) ;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.