Сопоставления NHibernate - PullRequest
       27

Сопоставления NHibernate

0 голосов
/ 21 февраля 2011

Может ли кто-нибудь помочь мне с этим?У меня есть два класса в моем проекте: пользователь и статья.Это выглядит так: enter image description here

    public class User
    {
        public virtual int UserID { set; get; }
        public virtual string Name { set; get; }
        public virtual IList<Article> Articles { set; get; }
        public User() { }
    }   

    public class Article
    {
        public virtual int ArticleID { set; get; }
        public virtual string Title { set; get; }
        public virtual string Body { set; get; }
        public virtual User User { set; get; }
        public Article() { }
    }

Теперь мне бы хотелось, чтобы таблицы в базе данных выглядели так: enter image description here

Я использую сопоставление XML.Пожалуйста, помогите мне.

Ответы [ 3 ]

2 голосов
/ 21 февраля 2011

Ваша схема БД показывает отношение «многие ко многим», тогда как сущности имеют отношение «многие к одному». Поэтому вы должны решить, какие отношения вам нужны. Дополнительную информацию о отображениях вы можете найти здесь

1 голос
/ 21 февраля 2011

Как Sly справедливо заявляет, что вы можете переместить UserId в таблицу Article

Если пользователь удален, тогда установите UserId для специального пользователя, например A System User This *Затем 1008 * может владеть любыми статьями, которым больше не назначаются пользователи, сохраняя при этом целостность.

1 голос
/ 21 февраля 2011

На данной диаграмме ER указано, что любая статья может иметь более одного автора (пользователя).В вашем случае вам по-прежнему не нужна эта схема.

Учитывая проблему удаления, если вы планируете удалить какую-либо строку пользователя из базы данных, у вас будет несколько статей с некоторыми идентификаторами пользователей, ссылки на которые свисают.таким образом, получая бесполезную информацию пользователя.Если вам нужна только информация о статье, просто создайте отношение 1 к n с пользователем и статьей.В противном случае (если вы собираетесь использовать информацию статьи со своим пользователем, даже если пользователь будет удален), я бы посоветовал удерживать удаленный флаг вместо удаления записи.

...