у меня есть этот 2 классFluentNHibernate отображение без внешнего ключа
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;}
}
я уже пытаюсь сопоставить класс с этим Mapper класса:
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 (x => x.Id) .GeneratedBy.Assigned(); Это говорит nHibernate, что приложение будет указывать Id, и оно не будет автоматически генерироваться столбцом Identity в БД. – CSL