3

기존 데이터베이스의 데이터 모델을 구성하는 데 많은 시간을 투자 한 후 더 많은 통찰력을 얻길 바랍니다. 나는 다음과 같은 데이터베이스 구조를 가지고있다.Entity Framework 4.3 일대일 외래 키 관계

User (Table) 
    UserID (P.K Identity int) 
    UserName (nvarchar) 

UserSetting (Table) 
    UserSettingsID (P.K Identity int) 
    UserSettingsUserID (F.K of User.UserID) 

모델에서 나는 useretting 엔티티를위한 UserSetting 속성과 usersetting 엔티티의 User 속성을 가지고있다.

사용자 설정 엔티티 유형 구성에서;

this.HasRequired(t => t.User) 
    .WithMany(t => t.UserSetting) 
    .HasForeignKey(d => d.UserSettingsUserID) 
    .WillCascadeOnDelete(false); 

사용자 엔터티에 ICollection으로 UserSetting을 만들면 위의 기능이 작동합니다 (현재로서는이 솔루션 만 사용 가능합니다). 외래 키 속성 설정과 그물에서 찾을 수있는 거의 모든 것이 있지만 행운은 없습니다. 이것은 리포지터리 패턴과 작업 단위를 사용하여 엔티티 프레임 워크로 코딩 한 첫 번째 시간입니다. 솔루션에 대한

+0

스키마 정의에서 DB에 1 대 1 관계를 적용하려면 'UserSetting' 테이블의'UserSettingUserID' 열에 고유 한 제한 조건이 필요합니다. 내가 잘못 생각하지 않는다면 EF 5.0에서만 고유 제한 조건이 지원됩니다. http://geekswithblogs.net/JoshReuben/archive/2010/09/13/entity-framework-5.0---not-quite-there-yet. aspx http://blogs.msdn.com/b/efdesign/archive/2011/03/09/unique-constraints-in-theentity-framework.aspx –

+1

@DannyVarod : 고유 제약 조건은 EF 5.0에서 지원되지 않습니다. : http://blogs.msdn.com/b/adonet/archive/2012/05/15/ef5-release-candidate-available-on-nuget.aspx 작년 도로지도에 있었지만 확인하지 못했습니다. EF 5에. – Slauma

답변

2

확인이 사람의 블로그 : 기본적으로

http://weblogs.asp.net/manavi/archive/2011/01/23/associations-in-ef-code-first-ctp5-part-3-one-to-one-foreign-key-associations.aspx

: 그는 User 클래스의 속성과 속성의 이름을 구성하는 방법을

modelBuilder.Entity<User>(). 
HasRequired(us => us.UserSetting). 
WithMany(). 
HasForeignKey(u => u.UserSettingId); 

지불 세심한주의를. 그에 따라 이름이 일치해야합니다.

덧붙여서 : 데이터 주석으로 엔티티를 장식하는 것은 Fluent API를 사용하는 것보다 쉬운 방법입니다.

0

하나 하나에 다음 UserSetting 테이블해야 하나의 기본 키가이 키가 같은 시간에 사용자 테이블에 대한 외래 키해야 찾고 있다면 :

사용자 (표) 사용자 ID (PK 정체성 INT) 이름 (NVARCHAR) 당신은 EF 4.x의에서 1 0..1에 엔티티 매핑이 스키마를 사용할 수 있습니다

2

User.UserID의 UserSetting (표) UserSettingsID (PK 신원 INT와 FK) :

Table Users 
    UserID int, PK, Identity 
    UserName nvarchar 

Table UserSettings 
    UserID int, PK, non-Identity, FK to Users 
    Settings nvarchar(max) or any other type 

또는 EF 4.x의에서 1 1 엔티티 매핑이 스키마 (두 엔티티로 테이블을 분할) : 테이블 분할에 대한

Table Users 
    UserID int, PK, Identity 
    UserName nvarchar 
    Settings nvarchar(max) or any other type 

링크 :
Using DB-First
Using Code-First

관련 문제