문제

양식 게시물의 결과로 새로운 브랜드 레코드를 저장하려고합니다. 내 생각에, 성별은 드롭 다운, 정수를 반환하는데, 이는 ViewData ( "Gender")에서 채워진다.

다음과 같이 링크를 설정합니다.

gID = CInt(Request.Form("Gender"))
Brand.GenderReference.EntityKey = New EntityKey("DB_ENTITIES.Gender", "Id", gID)
TryUpdateModel(Brand)
DB.SaveChanges()

다음 오류가 발생합니다.

Entities in 'DB_ENTITIES.Brand' participate in the 'FK_Brand_Gender' relationship. 0 related 'Gender' were found. 1 'Gender' is expected.

누군가가 나에게 평범한 영어로 매개 변수를 설명 할 수 있습니까? 또한 첫 번째 매개 변수로 DB.Gender를 시도했지만 기쁨은 없습니다.

도움이 되었습니까?

해결책

EntityKey를 만드는 대신 스터브 성별 객체를 만듭니다 (죄송합니다.

Gender g = new Gender{ID = Int32.Parse(Request.Form("Gender"))};

그런 다음 성별을 적절한 상태에 첨부합니다 EntitySet (재산의 이름 DB 당신이 아래의 성별 기업을 얻는다는 것은 아래의 문자열입니다) :

DB.AttachTo("Genders",g);

이것은 데이터베이스를 성별이있는 주에 넣습니다. ObjectContext 데이터베이스 쿼리가없는 변경되지 않은 상태에서 이제 정상에 따라 관계를 구축 할 수 있습니다

brand.Gender = g;
DB.AddToBrand(brand);
DB.SaveChanges();

그게 전부입니다. 함께 멍청 할 필요가 없습니다 EntityKeys

도움이 되었기를 바랍니다

알렉스

다른 팁

필요한 것은 브랜드와 성별의 사례이며 브랜드를 성별의 사례로 설정합니다. 그런 다음 문제없이 저장할 수 있습니다.

OK HER HER UPDATEMODEL을 사용하는 대신 내가 생각해 냈습니다. 포스트에 잠재적으로 추가 필드가 추가 될 때 문제가 발생 / 잠재적으로 보안 위험 인 것으로 보입니다. TryGetObjectBykey를 통해 새로운 성별 사례를 인스턴스화 할 수 있습니다. 이것은 지금까지 작동합니다. 젠더 속성 대상을 업데이트하기 위해 업데이트 모드를 얻는 것에 대한 다른 제안은 감사했습니다.

Dim cID As Integer
cID = CInt(Request.Form("Gender"))
Dim key As New EntityKey(DB.DefaultContainerName() & ".Gender", "ID", cID)

Dim objGenderDS As New Gender
'Bring back the Gender object.
If DB.TryGetObjectByKey(key, objGenderDS) Then
Brand.GenderReference.EntityKey = key
Brand.Gender = objGenderDS
DB.AddToBrand(Brand)
DB.SaveChanges()
Else
End If
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top