У меня есть два базовых класса Student и Course и один подкласс StudentCourse , которые наследуют свойства этих двух базовых классов.
Is itМожно ли сделать такое наследование с присоединенным подклассом?
Я пытался создать интерфейсы для обоих классов Student и Course , как показано ниже:
public interface StudentInterface
{
Int32 StudentId { get; set; }
}
public interface InterfaceCourse
{
Int32 CourseId { get; set; }
}
Код для student.cs
он реализует StudentInterface
public class Student:StudentInterface
{
[Key]
public virtual Int32 **StudentId** { get; set; }
public virtual string StudentName { get; set; }
public virtual DateTime Dob { get; set; }
public virtual string Gender { get; set; }
public virtual string Email { get; set; }
}
код для course.cs
public class Course:InterfaceStudentCourse
{
[Key]
public virtual Int32 **CourseId** { get; set; }
public virtual string Name { get; set; }
}
Код для studentCourse.cs он реализует как базовые классы Student, так и Course. Здесь я хочу сделать StudentCourse собственным первичным ключом, а не первичным ключом суперкласса. Здесь они должны быть внешними, как показано в StudentCourse.cs.ниже
public class StudentCourse:StudentInterface,InterfaceCourse
{
[Key]
public virtual Int32 **StudentCourseId** { get; set; }
public override Int32 StudentId { get; set; }
public virtual Int32 CourseId { get; set; }
}
Файлы сопоставления:
StudentInterface.hbm.xml
<class name ="StudentInterface" table="StudentInterface" >
<id name="StudentId" type="Int32" column="StudentId" >
<generator class="native"/>
</id>
<joined-subclass name="Student">
<key column="StudentId"/>
<property name="StudentName"/>
<property name="Dob"/>
<property name="Gender"/>
<property name="Email"/>
*// Need this subclass in both Student and course.....but giving duplication entity error*
**<joined-subclass name="StudentCourse">
<key column="StudentCourseId"/>
<property name="StudentId"/>
<property name="CourseId"/>
</joined-subclass>**
</joined-subclass>
</class>
CourseInterface.hbm.xml
<class name ="InterfaceCourse" table="InterfaceCourse" >
<id name="CourseId" type="Int32" column="CourseId" >
<generator class="native"/>
</id>
<joined-subclass name ="Course" >
<key column="CourseId"/>
<property name="Name"/>
*// Need this subclass in both Student and course.....but giving duplication entity error*
**<joined-subclass name="StudentCourse">
<key column="StudentCourseId"/>
<property name="StudentId"/>
<property name="CourseId"/>
</joined-subclass>**
</joined-subclass>
</class>
Так что проблема в том, что я сделал присоединенный к подклассу StudentCourse только в одномse class, то выдает ошибку вроде:
{"Не удалось найти получатель для свойства 'StudentName' в классе 'Core.Model.StudentCourse'"}
и когда я сделал StudentCourse присоединился к подклассу в обоих базовых классах (студент, курс), то ошибка, например:
{"Дублирование отображения классов / сущностей Core.Model.StudentCourse "}
Я знаю, что создание одного и того же подкласса с помощью объединенного подкласса невозможно ... Кто-нибудь, пожалуйста, скажите мне, что мне следует сделать, чтобы в таком сценарии стало возможным множественное наследование .....
Заранее спасибо ...