Я разрабатываю приложение службы WCF. Это будет частью большой системы. Он предоставляет некоторую бизнес-логику и основан на платформе Entity 4.1. Я хочу разделить код приложения на 2 уровня (проекты в VS, DLL): служба (которая содержит бизнес-логику) и DAL.
У меня есть такая модель базы данных в моем проекте
ClassModel
classID : int, PK
classIdentity : string
teacherName : string
statisticInfo : int
isRegistered : bool
StudentModel
studentID : int, PK
studentIdentity : string
classID : int, FK
Для этого я генерирую код с использованием шаблонов dbContext и получаю:
public partial class ClassModel
{
public ClassModel()
{
this.Student = new HashSet<StudentModel>();
}
public int ClassID { get; set; }
public string ClassIdentity { get; set; }
public string TeacherName { get; set; }
public int StatisticInfo { get; set; }
public bool IsRegistered { get; set; }
public virtual ICollection<TerminalModel> Terminal { get; set; }
}
public partial class StudentModel
{
public int StudentID { get; set; }
public string StudentIdentity { get; set; }
public bool IsRegistered { get; set; }
public virtual ClassModel Class { get; set; }
}
Я хочу раскрыть только часть этой информации через сервис, поэтому у меня есть другая модель в качестве контракта данных:
[DataContract]
public class Clas{
[DataMember]
public string ClassIdentity {get;set;}
[DataMember]
public string TeacherName {get;set;}
[DataMember]
public string ClassMark {get;set;} //computed from statisticInfo
[DataMember]
public int NumberOfStudents {get;set;} //amount of students in this class
}
И моя часть моего Сервисного Контракта:
[OperationContract]
public void RegsterClass(Clas clas); //(if given clas does not exists adds it and) sets its isRegistered column to True
[OperationContract]
public Clas GetClass(string classIdentity);
Как видите, некоторые поля отсутствуют, другие вычисляются.
В таком случае у меня есть некоторые опасения по поводу того, как правильно построить приложение. Не могли бы вы написать пример кода, который реализует методы интерфейса, используя все, что я упомянул так, как вы считаете правильным?