У меня есть следующие объекты в моем проекте, который я хочу отобразить с помощью NHibernate Атрибуты:NHibernate: карта класса с несколькими полями наследования
public interface IContent
{
int Id { get; set; }
string Name { get; set; }
}
public interface IUser
{
int Id { get; set; }
}
[Class]
public class Book : IContent
{
[Id(...), Column(...), Generator(...)]
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
[Class]
public class Collection : IContent
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
[Class]
public class Reader : IUser
{
[Id(...), Column(...), Generator(...)]
public virtual int Id { get; set; }
[Property]
public virtual string Email { get; set; }
}
[Class]
public class ReaderGroup : IUser
{
[Id(...), Column(...), Generator(...)]
public virtual int Id { get; set; }
[ManyToMany(...)]
public virtual ISet<Reader> Readers { get; set; }
}
А теперь я хочу, чтобы реализовать единый механизм контроля доступа:
public class AccessPermission
{
[Id(...), Column(...), Generator(...)]
public virtual int Id { get; set; }
public virtual IContent Object { get; set; }
public virtual IUser Subject { get; set; }
}
хитрость заключается в том, что есть два поля, которые принимают различные типы значений: Object
и Subject
. Я ранее использовал атрибуты и Subclass
, но тогда было только одно поле с унаследованными типами, а не два или более.
Есть ли разумный способ реализовать такой случай?
Можете ли вы описать, как вы моделируете это в базе данных? Есть несколько способов подойти к этому. –
Это новый проект, поэтому я просто создаю классы и позволяю NHibernate создавать схему для меня. Любой подход на стороне базы данных будет выполняться. – Impworks