FluentNHibernate映射我有這2類不用擔心外鍵
public class Product {
public virtual Guid Id {get; set;}
public virtual string Name {get; set;}
public virtual Description Description {get; set;}
}
public class Description {
public virtual Guid Id {get; set;}
public virtual string Suggestion {get; set;}
public virtual string Composition {get; set;}
}
我已經嘗試映射此映射類的類:
public class ProductMap : ClassMap<Product>
{
public ProductMap()
{
Id(x => x.Id);
Map(x => x.Name);
References(x => x.Description).ForeignKey("Id");
}
}
說明是有關與同一編號的產品,所以例如,Id = 1的產品將在Id = 1的表中進行描述。 現在我嘗試從表中讀取數據:
using (var session = factory.OpenSession())
{
var testProduct = session.Query<Product>().Where(p => p.Id == 2).Single();
lblValue.Text = testProduct.Description.Composition;
}
,但我得到的錯誤例外
InnerException: System.Data.SqlClient.SqlException
Message=Invalid column name 'Description_id'.
我知道我已經把一些錯誤的映射器的構造。你們能幫我正確地繪製這個圖嗎?我不想將字段Description_id放在表Product中。由於
謝謝,它適用於閱讀。但現在我插入時遇到問題。 –
要修復插入問題,請將兩個類的Id映射更改爲Id(x => x.Id).GeneratedBy.Assigned();這告訴nHibernate應用程序將指定Id,它不會由DB中的Identity列自動生成。 – CSL