올바르게 작동하도록 엔티티 집합을 가져 오는 데 문제가 있습니다. SQL Server 2008 R2 Express에 대해 VS2012에서 EF v5를 사용하고 있습니다.엔티티 프레임 워크 삽입시 일대일 관계 오류가 발생했습니다.
모든 것이 생성 된 데이터베이스에서 올바르게 보이지만 일부 테이블에 쓰는 데 아무런 문제가 없습니다. 같은 나는 또한 Country
엔티티가 정의되어
[Table("UserProfile")]
public class UserProfile
{
[Key]
public long UserId { get; set; }
[StringLength(56)]
public string UserName { get; set; }
public Country Country { get; set; }
...
}
:
나는 같은UserProfile
객체가 정의되어 생성 된 열은 데이터베이스에 올바른 볼
[Table("Country")]
public class Country
{
[Key]
public int Id { get; set; }
[StringLength(2)]
public string CountryCode { get; set; }
[StringLength(100)]
public string CountryName { get; set; }
public ICollection<UserProfile> UserProfiles { get; set; }
...
}
, 만약 내가 스크립트를 잡아 좋아 보인다 :
ALTER TABLE [dbo].[UserProfile] WITH CHECK ADD CONSTRAINT [UserProfile_Country] FOREIGN KEY([Country_Id])
REFERENCES [dbo].[Country] ([Id])
GO
을 그냥 테스트 목적으로 내가 구성 파일을 설정하는 시도
No mapping exists from object type MyApi.Data.Entities.Country to a known managed provider native type.
뿐만 아니라 코드의 관계를 지정하려면이 WebSecurity
방법은 내가 다음과 같은 오류가 실행
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new
{
Country = new Country { Id = 223, CountryCode = "UK", CountryName = "UK" },
...
});
: 컨트롤러 액션에서 나는 다음이 데이터베이스로하지만 여전히 친숙하지 않습니다. 그것은 내가이 완전히 잘못된 기초의 일부를 얻고 국가 오브젝트에 프로파일의 목록을 가지고 정말 이상한 느낌
public class CountryEntityConfig : EntityTypeConfiguration<Country>
{
public CountryEntityConfig()
{
this.HasMany(x => x.UserProfiles)
.WithRequired()
.HasForeignKey(FKey => FKey.Country);
}
}
: 같은
는 config 보인다? 모든 의견을 감사드립니다.
편집 : 사용자 프로필에 내가 지금 가지고있는 몇 가지 변화를 몇 가지 클래스를 revisted 및했습니다
:
public int CountryId { get; set; }
public virtual Country Country { get; set; }
Country.cs
public class Country
{
public int CountryId { get; set; }
[StringLength(2)]
public string CountryCode { get; set; }
[StringLength(100)]
public string CountryName { get; set; }
public virtual ICollection<UserProfile> UserProfiles { get; set; }
}
그리고 데이터베이스는 이제 Country 테이블과의 관계를 가진 UserProfile 테이블에 두 개의 CountryId 관련 필드를 포함하고 있으며 여전히 원래의 오류 m을 얻습니다. 에세지. 당신이 DbContext에 국가 엔티티를 추가하지 않았기 때문에
TIA,
국가 엔티티는 이미 DbContext에 있습니다. 이 예제에서는 항상 Id 속성이 아닌 클래스의 인스턴스를 사용합니다. UserProfile 클래스에 'int CountryId' 속성을 포함시켜 EF가 처리하도록해야한다는 뜻입니까? – Jammer
@ Jammer - 새 국가 개체를 만들기 때문에 새 국가를 삽입 할 것이라고 EF에 말하고있는 것입니다. 그렇게 할 수는 있지만, 원하는 것은 아닐 것입니다. ID가 자동 생성되므로 ID를 제공 할 수 없습니다. 사용자를 만들고 ID를 할당하려는 경우 사용자의 CountryID 속성을 통해 할당해야합니다. –
@ Jammer - 설명에서 DbContext에 Country 테이블을 추가 했음이 분명했습니다. –