【发布时间】:2016-12-08 15:39:12
【问题描述】:
我有多个嵌套在一起的实体,当我尝试添加调查类时出现错误
违反了多重性约束。关系“SurveyMonkeyAPIv3.Response_Pages”的角色“Response_Pages_Source”具有多重性 1 或 0..1。
因为它们都继承了Entity
public abstract class Entity :IEquatable<Entity>
{
[DataMember]
public virtual long Id { get; set; }
public override int GetHashCode()
{
return Convert.ToInt16(Id);
}
public bool Equals(Entity other)
{
return false;
}
}
调查实体
public class Survey : Entity, IEquatable<Survey>
{
//More fields//
[DataMember]
public string AnalyzeUrl { get; set; }
[DataMember]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public override long Id { get; set; }
[DataMember]
public string Language { get; set; }
[DataMember]
public int? PageCount { get; set; }
[DataMember]
public virtual List<Page> Pages { get; set; }
[DataMember]
public string Preview { get; set; }
//More Fields
public bool Equals(Survey other)
{
return this.Id == other.Id;
}
}
和页面
public class Page : Entity, IEquatable<Page>
{
[DataMember]
public string Description { get; set; }
[DataMember]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public new long? Id { get; set; }
[DataMember]
public int? Position { get; set; }
[DataMember]
public int? QuestionCount { get; set; }
//More Objects
// public long SurveyId { get; set; }
// public List< Survey> Survey { get; set; }
//tried including these , can't set in my automappers
但我找不到解决此问题的方法。
添加:
被指向 Response Entity ,随后
public class Response : Entity, IEquatable<Response>
{
[DataMember]
public string AnalyzeUrl { get; set; }
[DataMember]
public CollectionMode? CollectionMode { get; set; }
[DataMember]
public long? CollectorId { get; set; }
[DataMember]
public string CustomValue { get; set; }
//[DataMember]
//public Dictionary<string, string> CustomVariables { get; set; }
[DataMember]
public DateTime? DateCreated { get; set; }
[DataMember]
public DateTime? DateModified { get; set; }
[DataMember]
public string EditUrl { get; set; }
[DataMember]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public new long? Id { get; set; }
[DataMember]
public string IpAddress { get; set; }
//[DataMember]
//public Dictionary<string, object> LogicPath { get; set; }
//[DataMember]
//public Dictionary<string, object> Metadata { get; set; }
[DataMember]
public virtual List<object> PagePath { get; set; }
[DataMember]
public virtual List<ResponsePage> Pages { get; set; }
[DataMember]
public virtual List<ResponseQuestion> Questions { get; }
[DataMember]
public long? RecipientId { get; set; }
[DataMember]
public ResponseStatus? ResponseStatus { get; set; }
[DataMember]
public long? SurveyId { get; set; }
[DataMember]
public int? TotalTime { get; set; }
public bool Equals(Response other)
{
return Id == other.Id;
}
}
【问题讨论】:
-
一个调查可以有多个页面,但为什么一个页面可以有多个调查?
-
你有一个响应实体吗?看起来关系的名称告诉您问题出在 Response 和 Page 实体之间。
-
我确实有响应实体,抱歉 - 将编辑
-
Page to Survey(很多?)这不可能是另一个错误 - 为解决此问题而创建的。
-
你能在你的页面实体中添加外键来响应。我想这会告诉我们问题的根源。
标签: c# entity-framework