Я новичок в NHibernate и FNH. Я знаком с ORM и решил посмотреть, о чем идет речь в этом конкретном случае, главным образом из-за повышения производительности. На данный момент я думаю, что мое время было бы лучше потратить на что-то другое, но я не хочу, чтобы это победило меня, и я надеюсь, что это глупая ошибка, которую я совершаю, потому что я очень хочу, чтобы это произвело на меня впечатление. Во всяком случае, я попытался вручную сопоставить сущности (Свободно) безрезультатно, и теперь пытаюсь использовать функцию автоматического выбора. Вот моя модель домена.
public class Book
{
public virtual int Id { get; protected set; }
public virtual string Isbn { get; set; }
public virtual string Title { get; set; }
public virtual string Author { get; set; }
public virtual string Publisher { get; set; }
public virtual User Seller { get; set; }
public virtual ICollection<string> Pics {get; private set;}
public virtual string Condition { get; set; }
public virtual decimal Price { get; set; }
public virtual ExchangeMethod PreferedExchangeMethod { get; set; }
}
public class Course
{
public virtual int Id { get; protected set; }
public virtual University University { get; set; }
public virtual Semester Semester { get; set; }
public virtual string Description { get; set; }
public virtual string Name { get; set; }
public virtual ICollection<Book> RequiredBooks { get; private set; }
}
public class Exchange
{
public virtual int Id { get; protected set; }
public virtual User Buyer { get; set; }
public virtual User Seller { get; set; }
public virtual Book Book { get; set; }
public virtual ExchangeMethod Method { get; set; }
public virtual decimal Price { get; set; }
public virtual int SellerFeedbackRating { get; set; }
public virtual int BuyerFeedbackRating{get; set;}
public virtual string SellerComment { get; set; }
public virtual string BuyerComment { get; set; }
}
public class Semester
{
public virtual int id { get; protected set; }
public virtual University University { get; set; }
public virtual int Year { get; set; }
public virtual string Term { get; set; }
}
public class University
{
public virtual string Name { get; set; }
public virtual int Connections { get; set; }
public virtual ICollection<Course> Courses { get; private set; }
}
public class User
{
public virtual string UserName { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string Email { get; set; }
public virtual ICollection<Course> Enrollment { get; private set; }
public virtual ICollection<Book> Library { get; private set; }
public virtual ICollection<Exchange> Exchanges { get; private set; }
}
А вот мое отображение
public static ISessionFactory CreateSessionFactory()
{
IPersistenceConfigurer persistenceConfigurer = SQLiteConfiguration.Standard.UsingFile(DbFile);
return Fluently.Configure()
.Database(persistenceConfigurer)
.Mappings(m => m.AutoMappings.Add(
AutoMap.AssemblyOf<User>(assem => assem.Namespace == "DataTransferObjects")
.Override<User>(map => map.Id(user => user.UserName))
.Override<University>(map => map.Id(univ => univ.Name))
))
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
}
private static void BuildSchema(Configuration config)
{
// delete the existing db on each run
if (File.Exists(DbFile))
File.Delete(DbFile);
// this NHibernate tool takes a configuration (with mapping info in)
// and exports a database schema from it
new SchemaExport(config).Create(false, true);
}
Это ошибка, которую я продолжаю получать, которая довольно расплывчата:
Ошибка проверки XML: элемент 'class' в пространстве имен 'urn: nhibernate-mapping-2.2' имеет недопустимый дочерний элемент 'property' в пространстве имен 'urn: nhibernate-mapping-2.2'. Список возможных ожидаемых элементов: 'meta, subselect, cache, синхронизации, комментарий, tuplizer, id, составной-id' в пространстве имен 'urn: nhibernate-mapping-2.2'
Спасибо за любую помощь и извините за длинный пост.
EDIT
Оставляет ли способ, которым я выложил свою модель, склонность к ошибкам с круговой логикой, например, У пользователя есть книга, а у книги есть пользователь? Я ожидаю, что автопробег сможет это уловить.