Итак, мне нужно сопоставить мой класс с таблицей базы данных, но иногда мне нужна ленивая загрузка, иногда выключенная.
Пример:
Я сделал дубликаты этих двух классов, описанных ниже, и отображаю их, используя FNH, но с отложенной загрузкой в оригинале и выключением в дубликате.
http://i.stack.imgur.com/goG30.png
В принципе, я хочу иметь возможность получить команду из БД, у которой есть все списки с TeamMembers, но у этих участников не должно быть всех своих команд и всего остального, просто простая информация о TeamMember. Также, когда я получаю TeamMember из БД, я хочу, чтобы все его команды содержали только простую информацию.
"http://i.stack.imgur.com/7OkyD.png" -> они не позволяют новым пользователям размещать фотографии или ссылки.
Так что, если у меня есть только эти два класса, то, если с любой стороны включена отложенная загрузка, одна из ситуаций, описанных ранее, не выполняется. Если ленивый выключен с обеих сторон, я получаю кучу данных, которые мне не нужны и не нужны.
Сначала оригинал и дубликат имели одинаковые имена и были в разных пакетах, но я получил исключение, что отображение было неоднозначным. Если есть способ, чтобы это работало, это было бы идеально.
Есть ли способ сделать это?
Мне не удалось найти ответ, поэтому я изменил имя дубликата на NameOfOriginal + Lite.
Картографирование было проанализировано, но когда я хотел получить команду из базы данных, я получил исключение:
{"ORA-00904: \" SUPERVIZ _ \ ". \" TEAMMEMBERLITE_ID \ ": неверный идентификатор \ n"}
Итак, очевидно, что FNH читает имя класса и объявляет «_ID» и использует его в качестве идентификатора для моего дублированного класса, и это вызывает проблему. Я пробовал с
.ParentKeyColumn ( "")
.ChildKeyColumn ( "")
но безуспешно.
Надеюсь, я вас не слишком смутил:)
[DataContract]
public class Team
{
[DataMember]
public virtual int Team_id { get; private set; }
[DataMember]
public virtual String Name { get; set; }
[DataMember]
public virtual String Description { get; set; }
[DataMember]
public virtual TeamMember Deputy { get; set; }
[DataMember]
public virtual TeamMember Leader { get; set; }
[DataMember]
public virtual IList<TeamMember> TeamMembers { get; set; }
[DataMember]
public virtual IList<TeamMember> Supervizors { get; set; }
...
}
[DataContract]
public class TeamMember
{
[DataMember]
public virtual int TeamMember_id { get; set; }
[DataMember]
public virtual String First_name { get; set; }
[DataMember]
public virtual String Last_name { get; set; }
[DataMember]
public virtual String Sid { get; set; }
[DataMember]
public virtual IList<Team> SupevisingTeams { get; set; }
[DataMember]
public virtual IList<Team> LeaderInTeams { get; set; }
[DataMember]
public virtual IList<Team> DeputyInTeams { get; set; }
[DataMember]
public virtual IList<Team> MemberInTeams { get; set; }
...
}