【发布时间】:2012-03-15 14:32:39
【问题描述】:
我正在开发 WCF 服务应用程序。它将成为大型系统的一部分。它提供了一些业务逻辑,基于Entity framework 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
}
还有我的 ServiceContract 部分:
[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);
如您所见,有些字段不存在,而其他字段正在计算中。 在这种情况下,我对如何正确构建应用程序有些担心。您能否以您认为正确的方式使用我提到的所有内容编写实现接口方法的示例代码?
【问题讨论】:
-
DataMember 应该是 DataMember
-
“您能否编写示例代码,以您认为合适的方式使用我提到的所有内容来实现接口方法?”我认为你的问题应该更具体。如果您要发布概念性问题 - 请考虑以技术中立的方式提出问题。您的问题似乎与 WCF 或 EF 没有什么特别的关系。试着把问题分解成几个更小更具体的问题。 (我发现这有助于获得答案)
标签: wcf entity-framework entity-framework-4.1 n-tier-architecture dbcontext