我首先遇到EF代码和Odata的问题。
如果我导航到元数据,那么我发现我的所有关系都是这样定义的:
<NavigationProperty Name="Jobs" ToRole="Jobs" FromRole="Applicant" Relationship=".Applicant_Jobs"/>
注意关系名称前的句号?
这使我无法向控制台应用程序添加服务引用。它提供了自定义工具错误:
指定的架构无效。错误:关系属性无效 - 值'.Applicant_Jobs'根据其数据类型无效。
我的数据合约在此处定义:
[DataContract]
public class Applicant
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Forename { get; set; }
[DataMember]
public string Surname { get; set; }
[DataMember]
public string EmailAddress { get; set; }
[DataMember]
public string PassPhrase { get; set; }
[DataMember]
public string City { get; set; }
[DataMember]
public string County { get; set; }
[DataMember]
public string Country { get; set; }
[DataMember]
public DateTime CreationDate { get; set; }
[DataMember]
public ICollection<Job> Jobs { get; set; }
}
[DataContract]
public class Job
{
[DataMember]
public Applicant Applicant { get; set; }
[DataMember]
public JobStatus JobStatus { get; set; }
[DataMember]
public int ID { get; set; }
[DataMember]
[ForeignKey("Applicant")]
public int ApplicantID { get; set; }
[DataMember]
[ForeignKey("JobStatus")]
public int JobStatusID { get; set; }
[DataMember]
public string JobTitle { get; set; }
[DataMember]
public string WebsiteURL { get; set; }
[DataMember]
public string Reference { get; set; }
[DataMember]
public string Location { get; set; }
[DataMember]
public string Salary { get; set; }
[DataMember]
public string ContactName { get; set; }
[DataMember]
public string ContactEmail { get; set; }
[DataMember]
public string ContactPhone { get; set; }
[DataMember]
public string Pros { get; set; }
[DataMember]
public string Cons { get; set; }
[DataMember]
public string GeneralNotes { get; set; }
[DataMember]
public DateTime CreationDate { get; set; }
[DataMember]
public bool Archived { get; set; }
[DataMember]
public ICollection<JobProgression> JobProgress { get; set; }
}
正如您所看到的,我并没有在任何地方设置句号,但由于某种原因,我的模型中的每个关系都会生成一个,这意味着自定义工具失败。
答案 0 :(得分:2)
事实证明合同需要在命名空间中。这就是提供商试图放在点前面的东西。