이로 인해 1 주일 동안 나에게 큰 어려움이 생겼습니다.ComplexType 속성이있는 엔터티를 삭제할 수 없습니다 (Entity Framework 4)
public class SuggestionVote
{
public virtual int ID { get; set; }
public virtual Suggestion Suggestion { get; set; }
public virtual User User { get; set; }
public virtual VoteTypeWrapper VoteType { get; set; }
public virtual DateTime DateVoted { get; set; }
// Equality overrides omitted
}
VoteTypeWrapper
실제로 기사 on how to fake enums in Entity Framework 4에 따라 열거 래퍼이며, 다음과 같습니다 : 다음 VoteType
열거 존재와
public class VoteTypeWrapper
{
private VoteType _type;
public int Value
{
get { return (int)_type; }
set { _type = (VoteType)value; }
}
public VoteType EnumValue
{
get { return _type; }
set { _type = value; }
}
public static implicit operator VoteTypeWrapper(VoteType voteType)
{
return new VoteTypeWrapper { EnumValue = voteType };
}
public static implicit operator VoteType(VoteTypeWrapper voteTypeWrapper)
{
return voteTypeWrapper == null ? VoteType.NotVoted : voteTypeWrapper.EnumValue;
}
}
:
나는이처럼 보이는 클래스가
public enum VoteType
{
Up,
Down,
NotVoted
}
나는 또한 모델 디자이너 NED ComplexType
:
<ComplexType Name="VoteTypeWrapper" >
<Property Type="Int32" Name="Value" Nullable="false" />
</ComplexType>
나는 다소에 StackOverflow의 투표 시스템과 같은 작품을 구현하고있어 투표 시스템은 : 사용자는 위 또는 아래로 투표 할 수있다; 두 번째 투표로 이전 투표를 취소하고 반대 방향으로 투표 (즉, 이전에 투표했을 때 아래로)하면 투표가 취소됩니다.
지금 문제가 있습니다. 한 번 투표는 매력 같이 작동하고 모든 가치는 데이타베이스에 정확하게 저장된다. 그러나 투표를 취소하는 것은 일을 거부합니다. 투표를 취소하려면 기본적으로 삭제 취소를 위해 투표를 표시 한 다음 SaveChanges
으로 문의하십시오. 는 즉시 내가 InvalidOperationException
나에게 다음과 같은 메시지를주고 발생하는 것처럼 :
The entity of type 'System.Data.Entity.DynamicProxies.SuggestionVote_4A3949F5B95E9A51567509467230FD7CEA0FB7761C3AC9C8C2BBC62BCAA033AF'
references the same complex object of type 'Web.Model.VoteTypeWrapper' more than once.
Complex objects cannot be referenced multiple times by the same entity.
난 그냥 그것을 얻을하지 않습니다. 아무도 내가 뭘 잘못할 수 있는지 아는가? 나는 하루 동안 Google을 이용했지만 아무런 소용이 없었습니다.
이것이 이유 였습니까? 복잡한 유형? – Meligy
나는 지금 같은 문제가 있다고 생각합니다. 엔티티는 또한 enum에 대한 복합 유형 속성을가집니다. 결론으로 빨리 넘어 가기를 원하지 않는다. – Meligy
@Mohammed : 복잡한 경우 인'VoteTypeWrapper'는 오류 메시지에 언급 된 속성이므로 (위 참조) 생각하는 것이 안전하다고 생각합니다. 복잡한 유형이 이유였습니다. 또한, 내가 그것을 제거하자마자 모든 것이 효과가있었습니다. 마치 오리처럼 보이면 오리처럼 들릴 것입니다 ...;) –